如何iocp同时发送上千条tcp

yaya001 2007-04-14 10:41:17
想用iocp实现同时发送上千个tcp包(不同ip)的功能,看了一些例子都没有说到主动发送tcp包,都是建立一个socket监听某个端口,接收clients发来的包。
如果想要实现同时主动发送上千个tcp包(向不同的ip),是不是要加一个线程专门调用wsasend来发送?怎么写才能实现同时主动大量发?
...全文
374 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fox1999 2007-04-16
  • 打赏
  • 举报
回复
完成端口你可以查询读完成,也可以查询写完成状态的。

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

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

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

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

}

这样不就可以了?
难道你的服务器不保存客户端连接句柄的呀
fox1999 2007-04-16
  • 打赏
  • 举报
回复
用完成端口吧,可以开上千个线程,调度线程即可

---------------
哈哈,完成端口可没有叫你开上千个线程
Hylas 2007-04-16
  • 打赏
  • 举报
回复
当然需要Client连你了。 它不连,你根本无法发 。

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

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

通信 和 work thread 不需要那么多线程, 5,6个就差不多了,
开上千个线程序, 有点扯
mimong_lin 2007-04-15
  • 打赏
  • 举报
回复
接收只是个例子啊,你可以在accept客户端后,不用wsarecv,而是用wsasend了。而且,你完全可以在想要的地方调用wsasend的。
CathySun118 2007-04-15
  • 打赏
  • 举报
回复
用完成端口吧,可以开上千个线程,调度线程即可
yaya001 2007-04-15
  • 打赏
  • 举报
回复
那检测客户连接(connect)是不是也不需要加一个类似listen的线程呐?
如果我想要实现同时主动发送上千个tcp包(向不同的ip),并监听返回的包。具体的思路应该是怎么样的,能具体说说不?
呵呵
yaya001 2007-04-15
  • 打赏
  • 举报
回复
就是打算用完成端口呐,呵呵,有没有高人详细来说说怎么实现?
如果开一个线程来主动发tcp包的话,连接是不是不能用wsaconnect(iocp不支持吧?)
呐应该怎么实现呢?

恳请高人指点
龙凤呈祥焱 2007-04-15
  • 打赏
  • 举报
回复
IOCP只是用来进行异步处理的,至于你想发送异步还是接收异步没有什么限制.
检测到客户连接后直接发送查询信息就行了.
yaya001 2007-04-15
  • 打赏
  • 举报
回复
to unsigned:
你所说的队列加线程池的方案能简单介绍下,或提供一些参考资料或网页。

to mimong_lin:
我要实现的是先发查询,才接收client的回复。
僵哥 2007-04-14
  • 打赏
  • 举报
回复
IOCP是一种基于服务器的设计解决方案,而不是基于客户端的,按楼主的要求看,应该说采用队列加线程池还是可行的。
yaya002 2007-04-14
  • 打赏
  • 举报
回复
用iocp来实现的话,还需要启动1000个子线程??这是不是不符合iocp的思路呐?
neil_cn 2007-04-14
  • 打赏
  • 举报
回复
启动1000个子线程,占用1000个socket资源,连接1000个目标地址,做1000个线程的管理及同步。。。

这个需求有点不切实际哦

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧