socket 怎么解决发送长字符串被截断 ?求源码

解决方案 »

  1.   

    不要转换成字符串就可以
    发送用Write()
    接收使用ReadBytes()
      

  2.   

    我不会Delphi,一直在用C++ biulder
      

  3.   

    无法解决, 这是由以太网帧的结构所决定了的。Ethernet II帧中数据区最长为1500字节, 如果用来传送TCP数据包,则在TCP封装时,TCP报文头将占去20个字节。接着是IP封装,IP报文头至少20个字节,这样一来,一个Ethernet II帧中使用TCP协议可传送的数据最多只有1460字节了。超过这个长度的连续数据,都将被拆解为多个数据包分开发送。
      

  4.   

    楼主,socket不会截断长字符串的,只要你的send函数发送的长度比你的消息长就行,到了接收端recv函数的接收长度比消息长,那么你就可以成功接受到你的消息,至于网络上的1460字节的限制,那是网络层的事情,我们在写socket时用stream型或dgram型(即非raw型),是在传输层,根据tcp/ip分层的原理,传输层上干的事情不必理会底层网络层的处理细节。