100个并发UDP客户端接受UDP服务器发送的数据时,有大量丢包存在,请求帮助

tomjun 2004-07-16 11:53:16
1,UDP服务器S在UINX下
2,UDP客户端C在Windows下,用winsock2 API编写
3,大概交互过程如下
1)C向S放送一个无效信令,S不会理会它。这么做的目的是为了在C-S间建立连接
2)发送完毕后,C端建立一个接受线程,用于监听S的回复
3)创建线程后 Sleep 100ms
4)C给S发送有效信令,S将会给C发出回复
5)C的接受线程收到S的回复
6)结束

如果同时启动 100 个C,在跟踪调试时,一切正常,有发有收,一一对应。

现在的问题是,当按一般方式运行程序时,并发100个C,收到包的数量就会下降。

朋友说是由于 收包太快,系统处理不过来,就丢了。
请问,我该则么办?我还想同时并发 1000 个C向S施加压力呢。
...全文
384 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
firebolt2002 2004-07-17
  • 打赏
  • 举报
回复
用两条线程来处理,一条线程负责接收网络上的数据,把接收到的数据放到一个队列里,另一条线程负责处理队列里的数据。如果队列为空就等10MS 。
http://community.csdn.net/Expert/topic/2675/2675016.xml?temp=.90263
sharkhuang 2004-07-17
  • 打赏
  • 举报
回复
协议栈是可能丢掉的.
名牌大灰狼 2004-07-17
  • 打赏
  • 举报
回复
COPY http://community.csdn.net/Expert/topic/2675/2675016.xml?temp=.90263
MFCClass 2004-07-16
  • 打赏
  • 举报
回复
帮你up
MFCClass 2004-07-16
  • 打赏
  • 举报
回复
在发送的过程中sleep,让他慢慢的发,让接收端有个接收的时间
这样就付出了速度的代价。
Hotthing 2004-07-16
  • 打赏
  • 举报
回复
网络编程确实是很困难
tomjun 2004-07-16
  • 打赏
  • 举报
回复
操作系统有没有这样一个 缓冲区,它是整个 WinSock 的总缓冲,当它满时,所有Socket都将无法接受数据?

如果有这样缓冲的话,那把这个修改大或许能解决问题。

还请高手指教
kufan 2004-07-16
  • 打赏
  • 举报
回复
udp包都要有丢包重发的机制
Server收包怎么处理的,描述一下过程?

18,363

社区成员

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

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