我都sendbuf
p=packet record
  txt:array [0..2048-4-1] of char;
  size:integer;
end;
每次都发同样大小的包
文本实际长度为size;

解决方案 »

  1.   

    Socket.SendText在98下面如果连续Send是会出现问题,解决的方法是每隔200微秒发一次或者用
    SendBuf,要不然就用UDP.
      

  2.   

    我是在Win2K下开发的!因为程序已经快结束了,不想翻工,
    能不能请大家想个办法,用SendText真的不行吗???
      

  3.   

    你可以使用帧(Frame)结构:
    <LENGTH><DATA><LENGTH><DATA>.....
    将Text加密后得到长度Length,发送时先发送Length(Integer),再将Text数据发送。
    接收方先等待接收Length,收到后就可以确定Text有多少字节,再一并读入。
    因为Length是定长的(Integer),所以由长度和数据构成一个帧。简单、有效
      

  4.   

    噢,我看看你用的是非阻塞模式?
    OKOK,如果是这样,也在读取数据的事件中按照Length+Data方式,不要一次全部读入。
      

  5.   

    如果采用Length+data方式的话,
    那么我在接收data的时候,为了保障能够收到length长度的data,就得用
    receivebuff而不能用receiveText了!!!???
      

  6.   

    受到length+data的启发,
    我想用p:Array[0..255]of Char定长字符数组,用起来
    和PChar一样,又是定长,又可以与string 自由转化,
    翻工最小!
    我最开始想的是用#13#10来分隔,但
    由于传输时进行了加密,最终由于隔翻工量大而放弃了,
    不过可以解决问题的。
    谢谢大家了,分数送上!
    有更好方法的,欢迎继续讨论!!!
      

  7.   

    目前来看,只有Frame结构是最高效的,并且扩展性也是最好的。
    如果使用定长字符数组的话,会有许多限制:你的数据没法超过256字节,并且大量的带宽被无缘无故浪费掉。如果你的软件有升级的可能的话,则最好一步到位,否则以后会付出代价。
      

  8.   

    eDRIVE说得很有道理!我在以后网络通讯编程时会加以注意!!!
    谢谢!