嵌入式linux的网络编程 3 --TCP Client程序设计

2019-07-12 15:46发布

                嵌入式linux的网络编程(3)--TCP Client程序设计CSDN2013年度博客之星评选活动开始,本人有幸入围参加评选,如果博客中的文章对你有所帮助,请为 ce123 投上宝贵一票,非常感谢!
投票地址:http://vote.blog.csdn.net/blogstaritem/blogstar2013/ce123

1.概述

 客户端主要需要完成与服务器建立连接,请求数据,应答数据等工作.从代码上来看,客户端程序有很多代码与服务器端程序类似,我们先给出一个简单的客户端源码,随后进行详细的讲解.  1 /**************************************************************************************/  2 /*简介:TCPClient示例。                                                          */  3 /*************************************************************************************/  4 #include     5 #include   6 #include   7 #include   8 #include   9 #include  10 #include  11 #include  12  13 int main(int argc, char *argv[])  14 {  15         int sockfd;  16         char buffer[1024];         17         struct sockaddr_in server_addr;   18         struct hostent *host;      19         int portnumber,nbytes;     20  21         if(argc!=3)  22         {  23                 printf("Usage:%s hostname portnumbera ",argv[0]);  24                 exit(1);  25         }  26  27         if((host=gethostbyname(argv[1]))==NULL)  28         {  29                 herror ("Get host name error ");  30                 exit(1);  31         }  32  33         if((portnumber=atoi(argv[2]))<0)  34         {  35                 printf("Usage:%s hostname portnumbera ",argv[0]);  36                 exit(1);  37         }  38  39         /* 客户程序开始建立 sockfd描述符 */  40         if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)  41         {  42                 printf("Socket Error:%sa ",strerror(errno));  43                 exit(1);  44         }  45         /* 客户程序填充服务端的资料 */  46         bzero(&server_addr,sizeof(server_addr)); 47         server_addr.sin_family=AF_INET; 48         server_addr.sin_port=htons(portnumber); 49         server_addr.sin_addr=*((struct in_addr *)host->h_addr); 50         /* 客户程序发起连接请求 */ 51         if(connect(sockfd,(struct sockaddr *)(&server_addr), 52                                 sizeof(struct sockaddr))==-1) 53         { 54                 printf("Connect Error:%s(%d)a ",strerror(errno),errno); 55                 exit(1); 56         } 57         /* 连接成功了 */ 58         if((nbytes=read(sockfd,buffer,1024))==-1) 59         { 60                 printf("Read Error:%s ",strerror(errno)); 61                 exit(1); 62         } 63         buffer[nbytes]='