这是server端接收数据的代码,接收没问题,我想在接收后立刻发送一个返回数据.
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
str:string;
begin
str:='';
while (NOT AThread.Terminated) and (AThread.Connection.Connected)
and ( str='') do
str:=AThread.Connection.ReadLn;
MeMo1.Lines.Add(TimeToStr(Time)+str);
str:='dddd';
Athread.Connection.WriteLn(str); //发送?
end;在client端的onwork事件中接收对么?还是代码有错?
procedure TForm1.IdTCPClient1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
var
str:string;
begin
str:='';
while str='' do
begin
str:=IdTcpClient1.ReadLn;
end;
showmessage(str);
end;
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
str:string;
begin
str:='';
while (NOT AThread.Terminated) and (AThread.Connection.Connected)
and ( str='') do
str:=AThread.Connection.ReadLn;
MeMo1.Lines.Add(TimeToStr(Time)+str);
str:='dddd';
Athread.Connection.WriteLn(str); //发送?
end;在client端的onwork事件中接收对么?还是代码有错?
procedure TForm1.IdTCPClient1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
var
str:string;
begin
str:='';
while str='' do
begin
str:=IdTcpClient1.ReadLn;
end;
showmessage(str);
end;
client端先发,IdTcpClient1.writeLn;下条语句接着收IdTcpClient1.readLn
但我的writeln是在client发送的函数下,那不是如果server主动发送不就没法收了?
请问client端收到数据时能触发哪个函数么?
ClientThread := TClientMessageThread.Create();
ClientThread.FreeOnTerminate := True;
ClientThread.Resume;
while not Terminated do
begin
if not Fm_Main_Client.IdClient.Connected then
Terminate
else
try
MsgCommand := Fm_Main_Client.IdClient.ReadLn();
ServerMsg := MsgCommand;
if StrToInt(Trim(Copy(MsgCommand, 1, 2))) = 99 then
begin
Fm_Main_Client.IdClient.Disconnect;
Synchronize(HandleMessage);
Terminate;
Exit;
end
else
Synchronize(HandleMessage);
except
end;
end;
客户端先发是什么理由呢,能解释下吗?