<client>
sendtext('gg');
sendtext('mm');<server>
str:=receivetext;
if(str='gg')  then  //对gg进行处理
if(str='mm')  then  //对mm进行处理但实际情况常常是 str=ggmm;
问:若不像增加发送的消息量,该如何解决

解决方案 »

  1.   

    哈,你用的是d7吧,我在用TCPClient时也碰到过,如果你要连续发送的话就出现你说的情况了,不过每发一次,就关闭一次连接,就没有这个问题
      

  2.   

    下面的文字摘自'TCP/IP详解'卷一,
    两个应用程序通过T C P 连接交换8 bit 字节构成的字节流。T C P 不在字节流中插入记录标识符。我们将这称为字节流服务(byte stream service )。如果一方的应用程序先传1 0 字节,又传2 0 字节,再传5 0 字节,连接的另一方将无法了解发方每次发送了多少字节。收方可以分4 次接收这8 0 个字节,每次接收2 0 字节。一端将字节流放到T C P 连接上,同样的字节流将出现在T C P 连接的另一端。
    很多I n t e r n e t 应用使用一个回车和换行来标记每个应用记录的结束。如HTTP.
    另外一种技术是在每个记录之前加上一个记录的字节计数,DNS和Sun RPC采用了这种技术。
      

  3.   

    在DELPHI6的TClientSocket里面没有作这样的封装,需要自己代码处理.
    程序员只要没有真正理解TCP是数据流,往往会作不够恰当的处理,尽管这样
    编写出来的程序有时候也能正常运行.
    我估计这就是DELPHI7没有把TClientSocket,TServerSocket放在组件面板上原因.
    indy组件提供了Writeln 和Readln 方式,
    可以省力不少,减小出错机会.
    尽管它也有不足,毕竟方便许多.