当我收到OnReceive消息时,我用int size=Receive(Recvmsg,sizeof(Recvmsg));接受消息,但是有时候数据包过大或过多,数组Recvmsg满了,就需要再次调用int size=Receive(Recvmsg,sizeof(Recvmsg));但我应该如何知道数据包是否接受完毕?还有,如果后面的未接收的数据包不要了,如何丢弃?有这方面的函数吗?

解决方案 »

  1.   

    我猜是不是可以这样做,Client先发一个包,里面包含后面要传输的数据的大小信息,然后Server根据这个大小信息不断receive直到size 相等.就跳出循环.. 
      

  2.   

    每个客户端都有不同的CSocket对象
      

  3.   

    如楼上所说,针对每个客户端连接都建立不同一的Socket连接,
    如果这样的话,就该考虑用多线程来实现,服务端监听,有新的客户端连接就建立一个线程,专门处理该连接。
      

  4.   

    可不可以让Receive()在没有数据包的时候也可以返回,就是当我用Receive()接收数据包,直到收不到,当收不到时,不会处于阻塞状态,立刻返回