小弟现在碰到这样的需求:
1,服务器定时扫描数据库,得到数据。
2,根据已经登录的客户端的ID号,处理数据(即不同客户端有不同的数据)
3,把数据发送给客户端。客户端的数量比较多(>500)
目前的想法是采用UDP协议,selectIO模型和线程池。请大家给点意见
1,服务器定时扫描数据库,得到数据。
2,根据已经登录的客户端的ID号,处理数据(即不同客户端有不同的数据)
3,把数据发送给客户端。客户端的数量比较多(>500)
目前的想法是采用UDP协议,selectIO模型和线程池。请大家给点意见
解决方案 »
- 基于MSComm控件进行串口接收数据后怎样把数据保存到CSV(逗号分隔值文件)中呢?
- VC中用ADO连接ACCESS数据库出现的问题
- 服务器转发文件的疑虑?
- 各位兄弟对不起,说好两天以后结帐的,结果有点私事,拖到今天,再开个贴子,回报各们兄弟们
- 如何用CArchive类进行读写??
- 用WM_ERASEBKGND消息怎么改变背景色
- 现有一小问请需紧急求助,与图片相关的。多谢
- 从CDaoTableDef类继承,为什么链接错误??另外,如何用DAO改变ACCESS某一字段的类型?
- web页面是怎么调用exe文件出来的
- 如何用异步方式使用WInet类请求一个Url指定的Html文件
- 求助 ,在线等
- 帮忙看看这是什么原因?
如果不大,可以考虑用tcp。
udp要检测、重传,很麻烦。
如果数据不重要,容错,就使用udp 好了
大家现在都趋向于用TCP协议,分歧的地方是用长连接还是用短连接
先确认一下这两个概念吧
长连接:客户端登录上来后,就直到下线或者网络异常才断开。
短连接:客户端定时登录上来,获得数据后就断开。
如果是这样理解的话,应该用长连接,因为我发送的是实时数据,数据变化很快。如果频繁地建立TCP连接,也好耗费很多资源和时间
SERVER发包A,CLIENT返回确认包A,SERVER再将包A删除。
SERVER可以连续发包A,包B,再连续接收确认包A,包B尽量不使SERVER的线程阻塞。IO模型使用重叠好些,这样速度不受限。
线程池是要的。楼下继续
关于io模式的问题,500个用户不少了,我想最好用完成端口,不但效率高,而且还相对透明,他的线程池是不用你维护的.
俺是没多少经验,也就做过半年的UDP打洞的P2P聊天程序,现在这个需求跟聊天程序大不一样。所以才出来请教牛人们。
我想“牛人们”都是技术上牛,而不是嘴巴上“牛皮烘烘”
如果要用, 分开发,控制在1400以下。 客户端要做 接收确认。
服务器要做重发策略。如果用tcp
客户端的数量比较多(>500)
用IOCP