TCP客户端和服务器多个socket连接的问题求助
2016-01-06 23:07
621 查看
刚接到一项目,要做一个TCP客户端代理,该代理工作在linux平台上,与服务器最多时有接近1000条tcp连接,并定时发送心跳包以维持TCP连接不中断。现在要求服务器的技术实现不能有任何改动。只能在TCP客户代理上做文章。 目前想了两个方案,如下所示: 1. 在一个进程中通过for循环等方式建立这1000条tcp连接,并采用轮询或select的方式实现其他细节,如心跳包和响应等; 2. 为每一个TCP连接建立一个线程。 方案1,我写了一个简单TCP服务器和客户端程序尝试过,1000条tcp连接通信似乎没有问题,速度也能接受,但总觉得这个方案不够好。 方案2,我认为是理想的方案,但如果真是1000个客户,就要建立1000个线程,这显然也不太合适,开销也巨大。 有没有哪位大侠有更好的方案,在此谢过! |
1. 启动一个心跳检查线程负责心跳检查
2. 开启几个业务线程池, 负责处理业务处理转发。
3. 主线程采用poll模式轮询,同时负责数据分发调度到不同线程;
仅供参考。
FROM: http://bbs.chinaunix.net/thread-4140216-1-1.html
相关文章推荐
- iOS的网络请求相关知识
- 封装网络解析方法
- http://blog.csdn.net/bluejoe2000/article/details/39521405#t9
- iOS网络编程:五、Post代理异步
- iOS网络编程:四、Block方式实现异步
- iOS网络编程:三、GET代理方式进行异步请求
- QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址
- 关于fedora14更换主板后或ghost系统后网络无法连接的解决办法
- HTTP Authorization
- 网络编程2
- nginx 1.9 支持http2 协议
- Android网络开发框架Retrofit(四:扩展篇,Retrofit+RxJava)
- Https工具类
- java基础知识——网络编程、IO流
- java基础知识——网络编程、IO流
- java基础知识——网络编程、IO流
- 网络 tcp 标志位 / 字段
- Android网络开发框架Retrofit(三:进阶篇,接口实体类封装)
- TCP三次握手和四次挥手状态变迁解析
- webrtc rtcp mux及其对 传统voip的影响