admin 管理员组文章数量: 1184232
2023年12月22日发(作者:tokenizer占内存)
1 服务器端 2
3 #include
11 #define MAXLINE 409612
13 int main(int argc, char** argv)14 {15 int listenfd, connfd;16 struct sockaddr_in servaddr;17 char buff[4096];18 int n;19
20 if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){21 printf("create socket error: %s(errno: %d)n",strerror(errno),errno);22 exit(0);23 }24
25 memset(&servaddr, 0, sizeof(servaddr));26 _family = AF_INET;27 _addr.s_addr = htonl(INADDR_ANY);28 _port = htons(6666);29
30 if( bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){31 printf("bind socket error: %s(errno: %d)n",strerror(errno),errno);32 exit(0);33 }34
35 if( listen(listenfd, 10) == -1){36 printf("listen socket error: %s(errno: %d)n",strerror(errno),errno);37 exit(0);38 }39
40 printf("======waiting for client's request======n");41 while(1){42 if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1){43 printf("accept socket error: %s(errno: %d)",strerror(errno),errno);44 continue;45 }46 n = recv(connfd, buff, MAXLINE, 0);47 buff[n] = '0';48 printf("recv msg from client: %sn", buff);49 close(connfd);50 }51
52 close(listenfd);53 }
客户端代码:
客户端 1 客户端 2
3 #include
11 #define MAXLINE 409612
13 int main(int argc, char** argv)14 {15 int sockfd, n;16 char recvline[4096], sendline[4096];17 struct sockaddr_in servaddr;18
19 if( argc != 2){20 printf("usage: ./client
24 if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){25 printf("create socket error: %s(errno: %d)n", strerror(errno),errno);26 exit(0);27 }28
29 memset(&servaddr, 0, sizeof(servaddr));30 _family = AF_INET;31 _port = htons(6666);32 if( inet_pton(AF_INET, argv[1], &_addr) <= 0){33 printf("inet_pton error for %sn",argv[1]);34 exit(0);35 }36
37 if( connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0){38 printf("connect error: %s(errno: %d)n",strerror(errno),errno);39 exit(0);40 }41
42 printf("send msg to server: n");43 fgets(sendline, 4096, stdin);44 if( send(sockfd, sendline, strlen(sendline), 0) < 0)45 {46 printf("send msg error: %s(errno: %d)n", strerror(errno), errno);47 exit(0);48 }49
50 close(sockfd);51 exit(0);52 }
版权声明:本文标题:Socket过程详细解释(包括三次握手建立连接,四次握手断开连接) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1703199365a441971.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论