Tcp服务端客户端简单实现
看了《unix网络编程》中对关于socket相关函数的介绍后,对这些函数又有了更深入的了解,方便编程和调试。借鉴了书上的图和相关代码,自己写了比较简单的客户端和服务端代码,简单到甚至没用上宏定义和对返回值错误的处理,只想通过最简单的两部分代码来熟悉Tcp服务端和客户端的交互过程。

图截取自《unix网络编程》
//实现功能说明:服务端将字符串“hellowlf” 通过TCP协议传递给客户端,客户端接收到该字符串后将该字符串输出
服务端代码
View Code
1 #include<sys/socket.h> 2 #include<netinet/in.h> 3 4 int main() 5 { 6 struct sockaddr_in servaddr, cliaddr; 7 int listenfd, connfd; 8 socklen_t len; 9 10 listenfd = socket(AF_INET, SOCK_STREAM, 0); 11 12 bzero(&servaddr, sizeof(servaddr)); 13 servaddr.sin_family = AF_INET; 14 servaddr.sin_addr.s_addr = htonl(INADDR_ANY); 15 servaddr.sin_port = htons(8000); 16 17 bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); 18 19 listen(listenfd, 20); 20 21 for(;;) 22 { 23 len = sizeof(cliaddr); 24 connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &len); 25 26 write(connfd, "hellowlf", 9); 27 28 close(connfd); 29 } 30 return 0; 31 }
客户端代码
View Code
1 #include<sys/socket.h> 2 #include<netinet/in.h> 3 #include<stdio.h> 4 #include<arpa/inet.h> 5 6 int main() 7 { 8 char buf[1024]; 9 struct sockaddr_in servaddr; 10 int sockfd; 11 12 sockfd = socket(AF_INET, SOCK_STREAM, 0); 13 14 bzero(buf,sizeof(buf)); 15 16 servaddr.sin_family = AF_INET; 17 inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr); 18 servaddr.sin_port = htons(8000); 19 20 connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); 21 22 read(sockfd, buf, 1024); 23 printf("%s\n",buf); 24 25 close(sockfd); 26 return 0; 27 }


浙公网安备 33010602011771号