[Linux网络编程]TCP编程--TCP通信程序服务器端
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<netinet/in.h>#include<sys/socket.h>#defineSERV_PORT25555//服务器接听端口号#defineBACKLOG20//请求队列中允许请求数#defineBUF_SIZE256//缓冲区大小intmain(intargc,char*argv[]){intret;time_ttt;structtm*ttm;charbuf[BUF_SIZE];pid_tpid;//定义管道描述符intsockfd;//定义sock描述符intclientfd;//定义数据传输sock描述符structsockaddr_inhost_addr;//本机IP地址和端口信息structsockaddr_inclient_addr;//客户端IP地址和端口信息intlength=sizeofclient_addr;//创建套接字sockfd=socket(AF_INET,SOCK_STREAM,0);//TCP/IP协议,数据流套接字if(sockfd==-1)//判断socket函数的返回值{printf("创建socket失败.\n");return0;}//绑定套接字bzero(&host_addr,sizeofhost_addr);host_addr.sin_family=AF_INET;//TCP/IP协议host_addr.sin_port=htons(SERV_PORT);//设定端口号host_addr.sin_addr.s_addr=INADDR_ANY;//本地IP地址ret=bind(sockfd,(structsockaddr*)&host_addr,sizeofhost_addr);//绑定套接字if(ret==-1)//判断bind函数的返回值{printf("调用bind失败.\n");return1;}//监听网络端口ret=listen(sockfd,BACKLOG);if(ret==-1)//判断listen函数的返回值{printf("调用listen函数失败.\n");return1;}while(1){clientfd=accept(sockfd,(structsockaddr*)&client_addr,&length);//接收接连请求if(clientfd==-1){printf("调用accept接受连接失败.\n");return1;}pid=fork();//创建子进程if(pid==0)//在子进程是处理{while(1){bzero(buf,sizeofbuf);//首先清空缓冲区tt=time(NULL);ttm=localtime(&tt);//获取当前时间参数strcpy(buf,asctime(ttm));//将时间信息copy进缓冲区send(clientfd,buf,strlen(buf),0);//发送数据sleep(2);}close(clientfd);//调用close函数关闭连接}elseif(pid>0){close(clientfd);//父进程关闭套接字,准备下一个客户端连接}}return0;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。