TCP并发服务器模型(三)
2016-03-15 16:14
495 查看
本篇博客讲述的是单客户端单线程模型,该模型同样由主进程统一accept,只是将fork改为了pthread_create。
与进程相比,线程有很多优点(速度快,占用资源少,数据可以共享),
该模型结构如图所示:
![](https://img-blog.csdn.net/20160315161044828)
与上一篇博客讲述的模型非常类似,源代码同上一篇相比只有少量更改而已,亦不讲解。
服务器端代码如下:
客户端代码不变。见上一篇博客!
与进程相比,线程有很多优点(速度快,占用资源少,数据可以共享),
该模型结构如图所示:
与上一篇博客讲述的模型非常类似,源代码同上一篇相比只有少量更改而已,亦不讲解。
服务器端代码如下:
/* author:arvik purpose:test the server simultaneity email:1216601195@qq.com csdn: http://blog.csdn.net/u012819339 */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <time.h> #include <string.h> #include <unistd.h> #include <stdio.h> #include <arpa/inet.h> #include <pthread.h> #define BUFFLEN 1024 #define SERVER_PORT 8887 #define BACKLOG 3 static void handle_request(void *argv) { int s_c = *((int *)argv); char buff[BUFFLEN]; int n = 0; memset(buff, 0, sizeof(buff)); n = recv(s_c, buff, BUFFLEN, 0); if(n>0) { printf("receive msg from client: %s\n", buff); } close(s_c); } static int handle_connect(int s_s) { int s_c; struct sockaddr_in from; socklen_t len = sizeof(from); pthread_t thread_do; while(1) { s_c = accept(s_s, (struct sockaddr*)&from, &len); //block if(s_c>0) { pthread_create(&thread_do, NULL, (void*)handle_request, &s_c); } } } int main() { int s_s; struct sockaddr_in local; s_s = socket(AF_INET, SOCK_STREAM, 0); memset(&local, 0, sizeof(local)); local.sin_family = AF_INET; local.sin_addr.s_addr = inet_addr("127.0.0.1");//htonl(INADDR_ANY); local.sin_port = htons(SERVER_PORT); if(bind(s_s, (struct sockaddr*)&local, sizeof(local))) { printf("bind socket failed!\n"); return -1; } listen(s_s, BACKLOG); handle_connect(s_s); close(s_s); return 0; }
客户端代码不变。见上一篇博客!
相关文章推荐
- IOS 网络编程 + 后台保持连接
- FileInputStream不支持从网络路径获取数据
- 从零开始写http框架---第一篇
- HttpServletRequest 获取URL的方法及区别
- MAC、IP头、TCP头、UDP头帧格式、详解
- 负载均衡小结
- TCP/IP详解:第一、二章读书笔记
- 网络编程
- iOS-网络请求(传字符串数组参数)
- Fresco和 RecyclerView 实现瀑布流 <图片是用本地图片来模拟网络图片的>
- 深入理解scrollView的contentOffset等属性转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/deta
- 外贸人有必要掌握的24个网络工具
- apache https配置
- jquery异步http请求
- 卷积神经网络
- HttpClient 实践
- apache如何设置http自动跳转到https
- HTTP状态码、请求方法、响应头信息
- 淘宝如何选择产品对应人群画像太原网络营销师揭秘
- 循环神经网络(RNN, Recurrent Neural Networks)介绍