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 }

 

 

posted @ 2013-01-16 15:22  hellowlf  阅读(212)  评论(0)    收藏  举报