#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <netdb.h>
int main(int argc, char *argv[])
{
int sockfd,connfd;
struct sockaddr_in srvaddr;
struct sockaddr_in cliaddr;
int len,port;
char hello[]="Hi,welcome to
linux-code!/n";
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
fprintf(stderr,"Socket error:%s/n/a",strerror(errno));
exit(1);
}
/* 服務(wù)器端填充 sockaddr結(jié)構(gòu) */
bzero(&srvaddr,sizeof(struct sockaddr_in));
srvaddr.sin_family=AF_INET;
srvaddr.sin_addr.s_addr=htonl(INADDR_ANY);
srvaddr.sin_port=htons(1113);
/* 捆綁sockfd描述符 */
if(bind(sockfd,(struct sockaddr *)(&srvaddr),sizeof(struct sockaddr))==-1){
fprintf(stderr,"Bind error:%s/n/a",strerror(errno));
exit(1);
}
/* 監(jiān)聽(tīng)sockfd描述符 */
if(listen(sockfd,5)==-1){
fprintf(stderr,"Listen error:%s/n/a",strerror(errno));
exit(1);
}
len=sizeof(struct sockaddr_in);
while(1){ /* 服務(wù)器阻塞,直到客戶程序建立連接 */
if((connfd=accept(sockfd,(struct sockaddr *)(&cliaddr),&len))==-1){
fprintf(stderr,"Accept error:%s/n/a",strerror(errno));
exit(1);
}
fprintf(stderr,"Server get connection from %s/n",inet_ntoa(cliaddr.sin_addr));
if(write(connfd,hello,strlen(hello))==-1){
fprintf(stderr,"Write Error:%s/n",strerror(errno));
exit(1);
}
/* 這個(gè)通訊已經(jīng)結(jié)束 */
close(connfd);
/* 循環(huán)下一個(gè) */
}
close(sockfd);
exit(0);
}