客户端:
  IdTCPClient1.Connect;
  if IdTCPClient1.Connected then
  begin
    IdTCPClient1.Socket.Write('Test');  
    IdTCPClient1.Socket.ReadString(5);  //执行到这里停住了,据说是Indy的阻塞式.
    IdTCPClient1.Disconnect;
  end服务器端:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
begin
  AContext.Connection.Socket.AllData;
  AContext.Connection.Socket.Write('simon'); //本来是想在这里收到客户端的消息后马上发给客户端一个字符串,但是就是不行这句,为什么?而且即使屏蔽客户端的IdTCPClient1.Socket.ReadString(5); 也不执行这句。奇怪!
end;
请高手相助!

解决方案 »

  1.   

    是的,indy10, 我写在服务器端IdTCPServer.OnConnect事件中就可以解决了.
      

  2.   

    indy10都用了快半年了,就是因为indy9不稳定才用的啊
      

  3.   

    procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
    var
    s1:string;
    begin
    s1:=AContext.Connection.Socket.read(5);
    AContext.Connection.Socket.Write('simon'); 
    其实简单命令用writeln、readln最好处理了,indy能自动根据换行来接收一个完整命令。