socket服务器端在接收客户端数据时开了一个线程进行接收数据。但在数据接收时发现客户端发送的速度快,服务器端还没有处理完上一个数据包时下一个消息已经触发了,所以在接收时有一些数据来不急处理而丢掉一些数据包(我的服务器端用的是异步的),怎样才能解决这个问题。由于我的客户端比较多,并发现象也比较多,所以服务器有时会有好几个数据接收线程工作。

解决方案 »

  1.   

    既然你用了异步方式,windows会自动维护好你的接收队列,不管多少客户,在某一时刻始终只有一个客户在与你客户进行通信,在接收时不能开一个线程进行接收,如果接收后进行一些单独的数据处理,不涉及sock通信,可以在接收后在开线程进行处理。
      

  2.   

    你进行异步处理的时候不在单独线程中进行socket读写的操作
    不过对后来的数据产生影响的
    如果都是在一个线程执行,就不会产生那样的问题
      

  3.   

    对楼上的补充一点,队列有ThreadList,是线程安全的,很好用。