我用TClientSocket的SendText发送长字符串,结果ServerSocket只收到一部分,后面有一部分被截断了,SendText到底限制发送几个字符?
如果要传长字符串的话,是不是改用SendBuf?

解决方案 »

  1.   

    你client 发送的一个长字符串,server段可能分几次收到的,
      

  2.   

    谢谢,我知道了,用socket.ReceiveBuf(buffer,len),再写入tmemorystream类型的变量。可是当完成数据写入内存流后,如果要从内存流读入一个String变量里,该怎么写?对应的,缓冲区的定义应该写成buffer:array [0..10000] of byte还是buffer:array [0..10000] of char?
      

  3.   

    这个string 通常需要你自己定义它的格式,比如学习c语言,用$0作结尾标志。
    至于buffer的类型,这个byte和char都行,不过按照理解 byte可能好一些。
      

  4.   

    string没有LoadFromStream的事件,从内存写入string的语句是什么?
      

  5.   

    8192
    你sendtext,实际上底层已经用sendbuf替换了,你看看sendtext的源码一定是
    sendtext(str)和sendbuf(pointer(str),length(str),0)是一样的。
    你必须发送前判断大小,然后分割传送