#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);
}
/* 服务器端填充 sockaddr结构 */
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);
}
/* 监听sockfd描述符 */
if(listen(sockfd,5)==-1){
fprintf(stderr,"Listen error:%s/n/a",strerror(errno));
exit(1);
}
len=sizeof(struct sockaddr_in);
while(1){ /* 服务器阻塞,直到客户程序建立连接 */
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);
}
/* 这个通讯已经结束 */
close(connfd);
/* 循环下一个 */
}
close(sockfd);
exit(0);
}