读取二进制数据的Delphi和Indy10问题

问题描述

从网络设备读取二进制数据时遇到问题。我正在向设备(Lantronix XPort)发送4字节的二进制命令,并且期望该设备有124字节的响应。在监视与WireShark的通信时,我看到正在发送命令,并从设备返回了响应。但是,我不断收到EidReadTimeout异常,并显示消息“读取超时”

这是代码

function TXPort.ReadSetup(IP: string; var Setup: TXportSetup0): boolean;
var
  Cmd,Resp: TidBytes;
begin
  Result := False;
  TCP.Host := IP;
  SetLength(Cmd,4);
  Cmd[3] := XPortGetConfig;
  try
    TCP.Connect;
    TCP.IOHandler.WriteDirect(Cmd);
    TCP.IOHandler.ReadBytes(Resp,SizeOf(TXportSetup0),False);
    Move(Resp,Setup,SizeOf(TXportSetup0));
  except
    Exit
  end;
  TCP.disconnect;
  if Setup.Cmd[3] = (XPortGetConfig + 1) then { if proper response received... }
    Result := True; { tell us }
end;

我知道TCP.disconnect应该在“ finally”部分中,但这完全没有区别。 我搜索了许多站点和论坛,甚至一个站点确实具有与我相同的代码,但是可以工作! 我无法弄清楚这里出了什么问题。

最好, Meindert

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)