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施加压力呢。

解决方案 »

  1.   

    在发送的过程中sleep,让他慢慢的发,让接收端有个接收的时间
    这样就付出了速度的代价。
      

  2.   

    udp包都要有丢包重发的机制
    Server收包怎么处理的,描述一下过程?
      

  3.   

    操作系统有没有这样一个 缓冲区,它是整个 WinSock 的总缓冲,当它满时,所有Socket都将无法接受数据?如果有这样缓冲的话,那把这个修改大或许能解决问题。还请高手指教
      

  4.   

    用两条线程来处理,一条线程负责接收网络上的数据,把接收到的数据放到一个队列里,另一条线程负责处理队列里的数据。如果队列为空就等10MS 。
    http://community.csdn.net/Expert/topic/2675/2675016.xml?temp=.90263
      

  5.   

    COPY http://community.csdn.net/Expert/topic/2675/2675016.xml?temp=.90263