TCP通讯程序设计
这里主要包含客户机和服务器的编程。
一、编程模型函数化
使用函数说明:socket的理解
服务器:
创建socket使用函数----->socket
绑定地址使用函数------->bind
监听端口使用函数------->listen
等待连续使用函数------->accept
收发使用函数---------->recv/send
结束连续-------------->close
客户机:
创建socket使用函数----->socket
连接服务器函数--------->connect
收发使用函数----------->send/recv
结束连接使用函数------->close
二、首先编写服务器的代码
touch tcp_server.c
chmod 777 tcp_server.c
代码如下:
1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/socket.h> 4 #include <string.h> 5 #include <netinet/in.h> 6 7 #define portnum 3333 8 9 int main() 10 { 11 int sockfd; 12 int new_fd; 13 char buffer[128]; 14 int sin_size; 15 struct sockaddr_in server_addr; 16 struct sockaddr_in client_addr; 17 int nbyte=10; //表示打印前10个字符 18 //1.创建套接字 19 if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) 20 { 21 printf("creat socket error! "); 22 exit(1); 23 } 24 25 //2.1设置绑定的地址 26 bzero(&server_addr,sizeof(struct sockaddr_in)); 27 server_addr.sin_family = AF_INET; 28 server_addr.sin_port = htons(portnum); 29 server_addr.sin_addr.s_addr = htonl(INADDR_ANY); 30 31 //2.2绑定地址 32 bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr)); 33 34 //3.监听端口 35 listen(sockfd,5); 36 37 while(1) 38 { 39 //4.等待连接 40 sin_size = sizeof(struct sockaddr); 41 new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size); 42 printf("server get connection %s ",inet_ntoa(client_addr.sin_addr)); 43 44 //5.接受数据 45 recv(new_fd,buffer,128,0); 46 buffer[nbyte] = '