连接调用了两次Send第一次内容为:123
第二次内容为:456Server端却只收到一个消息,内容为:123456,两次内容被连在一起了我想把们分成两次收(我现在的做法就是加了分隔符),很久以前的程序了,想改一下,你们都是如何解决的?

解决方案 »

  1.   

    同意楼上,在TCP层最好定下自己的数据通信协议,根据发包的先后顺序来分别接收数据我感觉是很不可靠的
    比如
    struct OwnData{
    char Magic[3];
    char Data[1024];
    }
      

  2.   

    最好的解决方式,你必须在一次send后跟上一次receive以保证和服务器有来回的通信,
    好处1,不会超出缓冲区
    2.不会连接起数据
    3.你可以保持长时间通讯
      

  3.   

    很正常的现象,数据长度+数据 不就解决问题了。比如头4字节表示数据的长度后面数据,
    你收到的数据可能是 len1+"123"+len2+"456", 一看len1等于3, 表示后面3个字节是一组数据,处理,再看包长又是3,
    表示后面3个字节也是数据,不就把“123” “456”分开了吗。