嵌入式linux的网络编程(3)--TCP Client程序设计
2019-07-12 15:56发布
生成海报
嵌入式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]='
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮