IdTCPClient不再接收数据

时间:2015-10-23 16:55:43

标签: delphi thread-safety firemonkey tcp-ip

这段非常简单的代码在几小时前就运行得很好。

我使用TTimerIdTCPClient启动了写入和读取事件 成分

不知何故,它不再起作用了。尝试ReadLn时,它会冻结。

我怀疑ReadLn阻止主线程等待服务器线程调用WriteLn()

procedure TFormLogin.TimerGetListTimer(Sender: TObject);
var
  genset_response: String;

begin

  TimerGetList.Enabled := false;
  IdTCPClient1.IOHandler.WriteLn('GET_LIST');
  genset_response := IdTCPClient1.Socket.ReadLn();


end;
  • 如果我执行genset_response := IdTCPClient1.Socket.ReadString(8);,可以从回复正文中获取前8个字母。

  • 如果我执行ShowMessage(IdTCPClient1.IOHandler.ReadLn('',200));,则返回空白。

如何在不阻塞主线程的情况下正确读取服务器中的数据?

0 个答案:

没有答案