IdTCPClient在线程中发送buf,IdTCPServer.ReadBuff为什么会出错?
2个程序,分Client和Server。
Client程序中,我在窗口上放了个IdTCPClient组件
Server程序中,在窗口上放了个IdTCPServer组件
Client程序建立一个线程,在线程中我连接服务端,并发送一个Buffer:
var buf,recv: TBlock;
begin
if not TCPClient.Connected then begin
TCPClient.Host:= host;
TCPClient.Port:= port;
try TCPClient.Connect(5000); except end;//连接能成功
end;
if TCPClient.Connected then begin
TCPClient.WriteBuffer(buf, sizeof(buf));//发送也没问题
//TCPClient.ReadBuffer(recv, SizeOf(recv));
end;
end;
在TCPServer.OnExecute事件中。
procedure TfrmMain.TCPServerExecute(AThread: TIdPeerThread);
var Head: TBlock;
begin
if (AThread.Terminated) or (not AThread.Connection.Connected) then Exit;
AThread.Connection.ReadBuffer(Head, SizeOf(Head));//这一步出现问题。
end;
Client如果是在主线程中进行发送好像就不会有这样的情况,但如果在线程中就会出现服务端接收不到的问题。这个问题有什么方法可以解决吗?