首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么iocp同时发送上千条tcp

2012-01-31 
如何iocp同时发送上千条tcp想用iocp实现同时发送上千个tcp包(不同ip)的功能,看了一些例子都没有说到主动发

如何iocp同时发送上千条tcp
想用iocp实现同时发送上千个tcp包(不同ip)的功能,看了一些例子都没有说到主动发送tcp包,都是建立一个socket监听某个端口,接收clients发来的包。
如果想要实现同时主动发送上千个tcp包(向不同的ip),是不是要加一个线程专门调用wsasend来发送?怎么写才能实现同时主动大量发?

[解决办法]
启动1000个子线程,占用1000个socket资源,连接1000个目标地址,做1000个线程的管理及同步。。。

这个需求有点不切实际哦
[解决办法]
用iocp来实现的话,还需要启动1000个子线程??这是不是不符合iocp的思路呐?
[解决办法]
IOCP是一种基于服务器的设计解决方案,而不是基于客户端的,按楼主的要求看,应该说采用队列加线程池还是可行的。
[解决办法]
接收只是个例子啊,你可以在accept客户端后,不用wsarecv,而是用wsasend了。而且,你完全可以在想要的地方调用wsasend的。
[解决办法]
IOCP只是用来进行异步处理的,至于你想发送异步还是接收异步没有什么限制.
检测到客户连接后直接发送查询信息就行了.
[解决办法]
用完成端口吧,可以开上千个线程,调度线程即可
[解决办法]
用完成端口吧,可以开上千个线程,调度线程即可

---------------
哈哈,完成端口可没有叫你开上千个线程
[解决办法]
完成端口你可以查询读完成,也可以查询写完成状态的。

用了 WSASend 后,发送完它会通知你的

不过楼主的问题好象不是问这个。

你是说主动发送数据包,你把你的客户端连接用个

for(i=0;i <client_count; i++) {
send(); //WSASend

}

这样不就可以了?
难道你的服务器不保存客户端连接句柄的呀
[解决办法]
当然需要Client连你了。 它不连,你根本无法发 。

发送同一个内容时候, 上千个socket也要用同一个内存,这样就不会内存复制了。 控制好释放。

其它的,好象不存在什么问题吧 。。

通信 和 work thread 不需要那么多线程, 5,6个就差不多了,
开上千个线程序, 有点扯

热点排行