首页 > 其他 > 详细

TCP网络程序设计

时间:2016-02-22 23:30:15      阅读:400      评论:0      收藏:0      [点我收藏+]

TCP网络程序设计

课程索引

 技术分享

1 . 编程模型函数化

 技术分享

1 . 1 手把手学函数

创建套接字socket

绑定地址bind

1 . 2 地址类型

 技术分享

技术分享

 

1 . 3 地址转换

• in_addr_t inet_addr(const char *cp)
功能:将字符串形式的IP地址转化为整数型的IP地址(网络字节序)
范例: in_addr.saddr = inet_addr(192.168.1.1” );
• char *inet_ntoa (struct in_addr)
功能: 将整数形式的IP地址转化为字符串形式的IP地址

网络字节序

1 . 4 网络字节序

uint32_t htonl(uint32_t hostlong);
32位的数据从主机字节序转换为网 络字节序
in_addr.saddr = htonl(INADDR_ANY)
uint16_t htons(uint16_t hostshort);
16位的数据从主机字节序转换为网络字节序
16位的数据从主机字节序转换为网络字节序
uint32_t ntohl(uint32_t netlong);
32位的数据从网络字节序转换为主机字节序
uint16_t ntohs(uint16_t netshort);
16位的数据从网 络字节序转换为主机字节序

 

设置监听端口listen

等待连接accept

发送数据send

接收数据recv

关闭连接close

连接服务器connect

 

tcp_server.c

技术分享
 1 #include <stdio.h>
 2 #include <sys/socket.h>
 3 #include <string.h>
 4 #include <netinet/in.h>
 5 
 6 #define portnum 3333
 7 
 8 int main()
 9 {
10     int sockfd ,new_fd;
11     struct sockaddr_in server_addr;
12     struct sockaddr_in client_addr;
13     char buffer[128];
14     int nbyte;
15     int sin_size;
16     //创建套接字
17     if((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1)
18     {
19         printf("create socket error.\n");
20         exit(1);
21     }
22     //2.1设置要绑定的地址
23     bzero(&server_addr,sizeof(struct sockaddr_in));
24     sockaddr_in.sin_family = AF_INET;
25     sockaddr_in.sin_port = htons(portnum);//客户机转为网络字符序
26     sockaddr_in.sin_addr.s_addr = htonl(INADDR_ANY);//客户机转为网络字符序
27     //2.2绑定地址
28     bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr));
29     //3.监听端口
30     listen(sockfd,5);
31     while(1)
32     {
33         //4.等待连接
34         sin_size = sizeof(struct sockaddr);
35         new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);
36         printf("server get connection from %s\n",inet_ntoa(client_addr.sin_addr));
37         //5.接收数据
38         nbyte = recv(new_fd,buffer,128,0);
39         buffer[nbyte]=\0;
40         printf("server received : %s\n",buffer);
41         //6.结束连接
42         colse(new_fd);
43 
44     }
45     close(sockfd);
46     
47     return 0;
48 }
tcp_server

 

tcp_client.c

技术分享
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <sys/socket.h>
 4 #include <netinet/in.h>
 5 
 6 #define portnum 3333
 7 
 8 int main()
 9 {
10     struct sockaddr_in server_addr;
11     int sockfd;
12     char buffer[128];
13 
14     //1.创建套接字
15     if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
16     {
17         printf("create socket error.\n");
18         exit(1);
19     }
20     //2.1设置要链接的服务器的地址
21     bzero(&server_addr,sizeof(struct sockaddr_in));
22     server_addr.sin_family = AF_INET;
23     server_addr.sin_port = htons(portnum);
24     server_addr.sin_addr.s_addr = inet_addr("192.168.1.113");//服务器IP地址
25     //2.链接服务器
26     if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)) == -1)
27     {
28         printf("connect error.\n");
29         exit(1);
30     }
31     //3.发送数据到服务器
32     printf("Please input char:\n");
33     fgets(buffer,128,stdin);
34     send(sockfd,buffer,strlen(buffer),0);
35     //4.关闭连接
36     close(sockfd);
37 
38     return 0;
39 }
tcp_client

 

TCP网络程序设计

原文:http://www.cnblogs.com/love-linux/p/5208455.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!