socket网络编程——TCP servers &TCP client

    科技2022-07-13  117

    **

    servers

    **

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<assert.h> #include<sys/socket.h> //网络编程接口 #include<sys/types.h> #include<arpa/inet.h> //IP地址转换 #include<netinet/in.h> //主机/网络字节转换 int main() { int sockfd=socket(AF_INET,SOCK_STREAM,0)//使用TCP/IPV4 assert(sockfd!=-1)//失败返回-1 struct sockaddr_in ser_addr;//IPV4地址结构 ser_addr.sin_family = AF_INET;//地址族 ser_addr.sin_port = htons(6000);//端口号(主机字节序->网络字节序)? ser_addr.sin_addr.s_addr = inet_addr("127.0.0.1");//服务器地址(本地回环) int res = bind(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr));//将sockfd与一个socket地址绑定 assert(res!=-1);//失败返回-1 res=listen(sockfd,5);//创建监听队列,存储待处理的客户连接 assert(res!=-1); while(1)//循环获取客户端的连接 { struct sockaddr_in cli_addr; socklen_t len=sizeof(cli_addr);//? int c = accept(sockfd,(struct sockaddr*)&cli_addr,&len);从监听队列中接收一个连接 if(c==-1) { printf("accept error"); continue; } while(1)//循环与获取的客户端连接完成交互 { char buff[128]={0}; int n=recv(c,buff,127,0);//读取sock上的数据,无数据,则会阻塞 if(n<=0) { break; } printf("%d:%s\n",c,buff); n=send(c,"OK",2,0);//往sock上写入数据 if(n<=0) { break; } close(c);//关闭客户端连接 } close(sockfd);//关闭服务器 } exit(0); }

    **

    client

    **

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<assert.h> #include<sys/socket.h> //网络编程接口 #include<sys/types.h> #include<arpa/inet.h> //IP地址转换 #include<netinet/in.h> //主机/网络字节转换 int main() { int sockfd = socket(AF_INET,SOCK_STREAM,0); assert(sockfd!=-1); struct sockaddr_in ser_addr; ser_addr.sin_family=AF_INET; ser_addr.sin_port=htons(6000); ser_addr.sin_addr.s_addr=inet_addr("127.0.0.1"); int res=connect(sockfd,(struct sockaddr*)&ser_addr,sieof(ser_addr)); assert(res!=-1); while(1) { printf("Please input:"); char buff[128]={0}; fgets(buff,127,stdin); if(strncmp(buff,"end",3)==0) { break; } int n=send(sockfd,buff,strlen(buff)-1,0); if(n<=0) { break; } memset(buff,0,128); n=recv(sockfd,buff,127,0); if(n<=0) { break; } printf("recv data:%s\n",buff); } close(sockfd); exit(0); }
    Processed: 0.010, SQL: 8