网络并发服务器设计---9
2016-04-11 23:02
441 查看
网络并发服务器设计
与TCP服务器程序相比较添加以上特殊颜色的代码即可实现并发服务器设计:TCP服务器程序设计
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 #include <unistd.h> 8 9 #define portnum 3333 10 11 int main() 12 { 13 int sockfd; 14 int new_fd; 15 char buffer[128]; 16 int sin_size; 17 struct sockaddr_in server_addr; 18 struct sockaddr_in client_addr; 19 int nbyte=10; //表示服务器打印前十个字节 20 int pid; 21 22 //1.创建套接字 23 if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) 24 { 25 printf("creat socket error!\n"); 26 exit(1); 27 } 28 29 //2.1设置绑定的地址 30 bzero(&server_addr,sizeof(struct sockaddr_in)); 31 server_addr.sin_family = AF_INET; 32 server_addr.sin_port = htons(portnum); 33 server_addr.sin_addr.s_addr = htonl(INADDR_ANY); 34 35 //2.2绑定地址 36 bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr)); 37 38 //3.监听端口 39 listen(sockfd,5); 40 41 while(1) 42 { 43 //4.等待连接 44 sin_size = sizeof(struct sockaddr); 45 new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size); 46 printf("server get connection %s\n",inet_ntoa(client_addr.sin_addr)); 47 48 //创建子进程,由子进程处理数据通讯 49 if((pid = fork())== 0) 50 { 51 //5.接受数据 52 recv(new_fd,buffer,128,0); 53 buffer[nbyte] = '\0'; 54 printf("server receive : %s\n",buffer); 55 close(new_fd); 56 close(sockfd); 57 exit(0); 58 } 59 else if(pid<0) 60 printf("fork error!\n"); 61 62 //6.结束连接 63 close(new_fd); 64 } 65 close(sockfd); 66 }
与TCP服务器程序相比较添加以上特殊颜色的代码即可实现并发服务器设计:TCP服务器程序设计
相关文章推荐
- TCP通讯程序设计---5
- Okhttp3 中响应回来的数据response.body().string()
- linux 网络协议分析---3
- 技术向:一文读懂卷积神经网络CNN
- IOS学习 网络 User-Agent 换行/r/n最安全 url汉字转换
- 网络安全——数据的加密与签名,RSA介绍
- 图论(网络流):COGS 410. [NOI2009] 植物大战僵尸
- HTTP Keep-Alive详解
- 网络流的征程——Ford-Fulkerson算法
- TCPL Excercise 2-9
- 如何使用Linux Epoll来进行网络程序开发(译文)
- 深度学习卷积神经网络大事件一览
- iOS 网络请求 NSURLSession 的上传文件方法
- python HTTPBasicAuth和flask_login验证的区别
- 腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式
- 腾讯公司数据分析岗位的hadoop工作 线性回归 k-means算法 朴素贝叶斯算法 SpringMVC组件 某公司的广告投放系统 KNN算法 社交网络模型 SpringMVC注解方式
- flex学习进度7之网络访问
- nat的default网络重新开启
- [Java拾遗二]Tomact及Http 部分总结.
- Linux下的socket网络编程