我在服务器端连续向客户端发送2条信息,为什么有时客户端不是一条一条的收
而是2条连起来当一条收?   server端:
   Socket.SendText('aaaaaaaaaaaaaa');
   Socket.SendText('bbbbbbbbbbbbbb');   Client端:
   S:=Socket.ReciveText; 
   memo1.lines.add(S);   memo1中:
   aaaaaaaaaaaaaabbbbbbbbbbbbbbb;  照理说应该是
   aaaaaaaaaaaaaaaaa
   bbbbbbbbbbbbbbbbb  
     
  

解决方案 »

  1.   

    因为你的客户端接收的是来自服务器端的信息
    SendText多多少
     ReceiveText就接收多少
    除非你有多个客户端
      

  2.   

    这个并不是真的就是
    aaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbb
    的格式,跟楼上说的一样,如果你是多个户端的话,那就是山门的那种结果
    如果是在一台机器上连续两次使用SendText发送命令的话,
    实际上TCP包是直接被封装成了aaaaaaaaaaaaaabbbbbbbbbbbbbbb;
    因为,无论是TCP包还是UDP包,在传输封包的过程中始终是一个buffer!
    如果在很短的时间内连续的发包,TClientSocket的低层封包就已经将
    前后两条命令封装在一起了,就形成了你最后看到的aaaaaaaaaaaaaabbbbbbbbbbbbbbb
      

  3.   

    那该怎么处理才能让客户端分别收到 aaaaaa 和 bbbbbbb?
      

  4.   

    Socket.SendText('aaaaaaaaaaaaaa'+#10);
       Socket.SendText('bbbbbbbbbbbbbb'+#10);如果确实需要换行,就手工加个换行符
      

  5.   

    其实你用SendText发过来是以#0结尾的
      

  6.   

    TO:wolf2005()
    那个#0只是结束标志,不会被发出
      

  7.   

    如果全是发送的文本而且以回车结束的话,可以用
    TcpClient1.Receiveln()
    TcpClient1.Sendln()
      

  8.   

    能够用Socket技术实现C/S结构的程序,客户端读取服务器端的数据库Access,并将结果返回吗?