客户端:
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;
请高手相助!
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;
请高手相助!
var
s1:string;
begin
s1:=AContext.Connection.Socket.read(5);
AContext.Connection.Socket.Write('simon');
其实简单命令用writeln、readln最好处理了,indy能自动根据换行来接收一个完整命令。