【发布时间】:2019-10-01 08:37:51
【问题描述】:
我尝试在 idtcpclient 中接收文本,但它不起作用。这是我在计时器中使用的代码:
procedure TForm1.Timer2Timer(Sender: TObject);
var
receivedtext:string;
begin
if idtcpclient1.Connected = true then
begin
with idtcpclient1 do
begin
if not IOHandler.InputBufferIsEmpty then
begin
try
receivedtext := IOHandler.ReadLn;
finally
if receivedtext = '' = false then
begin
showmessage(receivedtext);
idtcpclient1.IOHandler.InputBuffer.Clear;
receivedtext := '';
end;
end;
end;
end;
end
else
begin
timer2.Enabled := false;
end;
end;
定时器的间隔是 8 毫秒。
定时器在连接时自动启用。
但是当我发送一些东西时,我没有收到消息框或错误。
我确定我写了数据,因为当我使用 tclientsocket 时,我确实收到了它。
我做错了什么?
【问题讨论】:
-
receivedtext = '' = false甚至可以编译吗? (请出示您的真实代码) -
为什么要清除InputBuffer?在成功的 Read... 操作后,Indy 将从 InputBuffer 中删除读取的字节。
-
为什么你的计时器中有这段代码?使用如图所示的代码,您将遇到重入问题,尤其是在计时器值为 8 毫秒的情况下。
-
我认为您的代码完全错误。使用 google 搜索示例,例如 ...sourceforge.net/projects/indy10clieservr 那里的第一个演示应该有助于“1_sample Simple String Exchange”
标签: delphi timer tcpclient indy