问个完成端口IOCP服务端发送给客户端的问题 我现在的应用是接收到指定客户机的数据,然后转发给其他客户机.我现在的做法是,把待发送的数据分发到各个客户机的发送缓冲中,也就是独自发送缓存,然后有一个发送线程,WSASend数据.现在的问题是,如果客户机一多,假设是1000台,那么一个循环下来发送的数据间隔似乎大了.如果发送的是视频,那么就会觉得卡,断断续续的. 大家有没有什么解决办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是用了IOCP进行投递的话,1000个的循环投递应该是不成问题的,因为不是阻塞的 IOCP,可以同时 递交无数的WSASend,由windows来帮你队列化。自己可以不用建队列,但是WSASend异步会吃掉内存,因为你发送的数据实际被排队了,如果太对了,恐导致 WSASend异步失败,或者windows IOCP挂掉。 因为我要做的视频转发,假设每秒的数据量是70K,我要把这70K数据转发到所有客户端上,如果只有一个线程负责投递的话,如果有几百用户或上千用户,而且发送时我还要把70K拆包成4K发送,那么一个循环下来,客户接收到的数据都是延时的.我现在的作法是多开几个投递线程,假设10个,每一个负责一个区间,我这里设置100,每个线程负责100客户端的发送,这样应该能减少时间上开销吧?而且我发送的数据包,用接口(IInterface)来封装,然后提交给每个客户端的发送缓存,这样可以的话当数据没人调用时,这个接口就自动销毁了,不用每个客户端都建立一个副本,只需要指令就行了.不知道上面的做法有什么不妥吗? 用IOCP就是多个线程同时工作的,你怎么才一个线程了 那位大侠能给我传授传授经验关于VC的 100分 关于CFileFind 一个消息能否在CMainFrame和CView之间同时响应? 关于视频与位图的问题,绝对是高手级问题 请问在vc中如何使用ActiveDLL 如何让程序不在Ctrl+Alt+Del中显示? 大家一起来评论一下trolltech 的QT开发库怎样,见者散分:) 编译运行程序提示AppShared.dll未能启动? 救命!请问在程序中如何改变IIS主目录的磁盘路径(我只能最高给20分) mfc变量定义问题 使用ADO遍历数据库的问题 directshow中,如何将两路视频合成一路输出?
自己可以不用建队列,但是WSASend异步会吃掉内存,因为你发送的数据实际被排队了,如果太对了,恐导致 WSASend异步失败,或者windows IOCP挂掉。
不知道上面的做法有什么不妥吗?