我用serversocket的 ServerSocket1.Socket.ReceiveText 接收clientsocket发来的数据发现接收不全,只能接收一部分,如何解决?客户端用的ClientSocket1.Socket.SendText(memo1.text);//memo1.text 大概有6000个字符如何能让服务端完整的接收发过来的数据 并在memo2中显示呢?

解决方案 »

  1.   

    最好不要使用ReceiveText之类的.直接使用ReceiveBuf,ReceiveText/receiveBuf都有一个返回值.0表示断线,小于0表示异常,大于0表示实际接收的字节数.代码呢,最好自己学着写.写得如何都可以给自己带来进步.有问题一起分析就是了.当接收的字节数不足预期数量时,就需要继续接收.发送也一样存在一个发送的字节数问题.当然,发送的时候,可以有一个投机的办法(只是消耗大一点),那就是使用SendStream.那样子就不需要手工去控制循环了.先写入四个字节的长度,然后再写具体的数据即可.
      

  2.   

    用zip把文本内容压缩一下再发,注意不是压缩文件,成是压缩内容,发送过去后再解压就可以了
      

  3.   

    发送端:先发送长度,然后发送buffer.接收端:
    发送端一次性发送,如果包过大,可能在接收端产生几次接收事件。在OnRead事件里,先接收到了长度,然后再接收数据,每接受到一次数据,都追加到一个缓冲区,判断,当缓冲区的数据长度>=长度时,再进行处理,此时才能确认接到了一个完整的数据包。