sockets,tcp连接,并且是长连接,当终端有2000个以上时,如何实现稳定地接收终端数据(同一时间点可能有数个终端同时上传数据) ( 积分: 300 )

  • 主题发起人 主题发起人 耗子_super
  • 开始时间 开始时间
socket 还是自己写, 既然要做 监控系统 还怕写线程 socket 这些东西吗

一两天就能搞定 最多不超过1000行代码就能搞得很好 (包括超时重发,自动重连 网络情况探测等)
 
TseverSocket 等组件 速度慢
况且根本不可能达到 那么多客户端。
要达到您的要求 必须 是 “完成端口”
 
仔细剖析一下IdTCPServer的源码,实际上只要运行客户端一旦连接传完数据后,服务器主动断开这个连接就好办。
 
用完成端口
 
不要看 Indy 控件 那是垃圾
 
写一个控制系统
由服务器决定哪个客户端上传数据
客户端配一定的缓存就行了
轮寻时间短点
保证实时就行了
 
开这么多线程估计对服务器确实有难度,建议楼主试试这个。楼主可以在服务器端做一个线程池(10个左右的线程)不停的截取IP包,然后再对符合条件的包进行处理,所得的数据可以放在一个缓冲数据区里(例如能放10000条客户端信息)。这样,线程池可以做到对每条信息的接收,缓冲数据区能平衡数据的高峰期,做到处理每条信息。
没有实践过,只给楼主一个想法。
 
学习,正看这个..........
 
大家继续讨论啊,本周五结帖(09-16)
 
呵呵,如果包不是很大的话,可以联系我,5000之内都可以的。
 
多人接受答案了。
 
后退
顶部