我想在OnReceive()函数中,先调用Receive()得到整个数据包的长度字段,再调用多次Receive()接收
该数据包的其他数据,这个如果可以的话,我想另外开一个线程来接收?

解决方案 »

  1.   

    不行,应为OnReceive()是基于消息响应的如果你接收完了缓冲区中的数据,再投递Receive()就会阻塞,那么下一个数据到达就得不到消息响应了
      

  2.   

    应该可以的吧,另外一个receive全部字节后,就应该不继续调用receive了
      

  3.   

    如果你接收完了缓冲区中的数据,再投递Receive()就会阻塞,那么下一个数据到达就得不到消息响应了
    -------------------------------------
    对于这个,我想问一下, 每次Receive()可接收数据的最大长度是多少字节?
      

  4.   

    没有问题的
    一般设置2000即可,反正Receive会返回实际接收到的数目的,没有必要把接收区开的太大呀
      

  5.   

    可以,只要缓冲区又数据,winsock就还会发送消息,你的onreceive就还会被调用
      

  6.   

    你这样会出问题的,但是我不知道其中的原因,原来我一个程序也是你这样处理,但是运行一段时间后,会停止响应OnReceive事件。
      

  7.   

    不会有什么问题吧。建议不要用CSocket。