读书人

这种情况用什么网络模型比较好?解决思

发布时间: 2012-04-01 17:23:46 作者: rapoo

这种情况用什么网络模型比较好?
要实现的是一个转发平台
有多个A类客户端,和多个B类客户端,A、B都是主动连接到平台

A类户端会一直传输实时数据到平台,每秒种在(1M左右),同时根据B类客户端的连接和授权情况,将A客户端的数据转发给
B客户端,一个B类客户端可以同时接收平台转发的多个A类客户端。


我现在采样的是选择模型,1个A,10个B的情况,就会有延时的情况。转发不过来。


采用什么样的模型比较好。有例子更好了

hucailai@163.com

[解决办法]
windows下IOCP,不过Select应该也不会有本质上差据的。无论哪种模型,线程都不要开多了,也不要用同步I/O(貌似很多情况下都是因为使用同步I/O所以开了很多线程)。

还有,10个B就是10M左右的数据了,要百兆带宽了,你确信你的网络拖得动?
[解决办法]
个人觉得,select就是有数量限制,剩下没什么不好的。
[解决办法]
延时估计主要在网络I/O等方面,所以需要想办法提高这方面的性能.更强的网卡,带宽,CPU,内存等
[解决办法]
1个A就1MB/s了,你有几个A?
理论上讲,百M的网卡也就12MB/s的样子,实际大概只有10M~11M,如果CPU占用过大,可能还会有所下降。
你说到了延迟,延迟多少?如果在一个合理的范围内,就不用去管他了,肯定会有延迟的,不管你如何弄。
IOCP模型是可以解决一些框架和消息运作的问题,但是并不能解决大数据的问题,所以如果A过多的话,还是考虑用分布式服务器来处理。
按照你提供的条件来看,基本上一台服务器带个5~8个A,加若干B是个可行的方案
[解决办法]

探讨

1个A就1MB/s了,你有几个A?
理论上讲,百M的网卡也就12MB/s的样子,实际大概只有10M~11M,如果CPU占用过大,可能还会有所下降。
你说到了延迟,延迟多少?如果在一个合理的范围内,就不用去管他了,肯定会有延迟的,不管你如何弄。
IOCP模型是可以解决一些框架和消息运作的问题,但是并不能解决大数据的问题,所以如果A过多的话,还是考虑用分布式服务器来处理。
按照你提供的条件来……

[解决办法]
重叠IO就可以了吧~
[解决办法]
数据量真大
[解决办法]
看看这个吧http://blog.csdn.net/xt_xiaotian/article/details/2778689
[解决办法]
SELECT 模型也不错的,一直在用
[解决办法]
数据量太大,IOCP合适.其他方式效率比较低.
[解决办法]
局域网中转发既然你用户数少,用单线程不怎么合适,就一个用户一条线程试试,trace注释掉,sendmessage也最好尽量少用
[解决办法]
如果客户端规模不是太大,用completion routines应该可以满足吧
[解决办法]
单线程select不行。。send阻塞了。send 1M数据.如果对方网络不行。那不是都卡在网络上了。其他的收发就等吧。

开一客户一线程就可以解决了。慢也只慢一个连接。不影响其他连接。
[解决办法]
不管select还是iocp只要是异步问题就不大
[解决办法]
100以下下都无所谓,超过1000直接使用IOCP
[解决办法]
IOCP

读书人网 >VC/MFC

热点推荐