Delphi Indy TCP 套接字服务器有时会冻结,限制是什么

Delphi Indy TCP 套接字服务器有时会冻结,限制是什么

我制作了 TCP 套接字服务器应用程序。

嵌入式 GSM 模块设备通过 TCP/IP 协议连接到 GSM 线路上,每 1 分钟发送大约 140 字节的数据。我解析这 140 字节数据并将其保存在数据库中。

有时所有客户端都断开连接,服务器应用程序被锁定(冻结),然后设备无法重新连接。(如果断开连接,所有设备都会自动重新连接)

try 
  AContext.Connection.IOHandler.DefStringEncoding: = IndyTextEncoding_UTF8;
  // clean buffer
  SetLength (RCIdByte, 0);
  // read incoming packet
  AContext.Connection.IOHandler.ReadBytes (RCIdByte, -1);
  IdTcpServer1.Contexts.Locklist;
  if Length (RCIdByte)> 0 then
  begin
  ...
  //parse and insert into database
  ...
  end;
finally
  IdTcpServer1.Contexts.Unlocklist;
end;

顺便说一下,平台(Linux 或 Windows)数据库服务器 PostgreSQL(9、5 或 10),数据库连接组件 uniDAC

从技术上讲,它与计算机上的本地端口数量一样多(65500+),但在实时应用环境中情况有所不同。

1 分钟的时间短吗?设备总数现在是 4 个,但将来会达到 500 个或 1500 个

相关内容