0

我有一个非常简单的应用程序,有 10 个客户端和 2 个服务器。每个客户端每 10 秒向两台服务器发送一次心跳。它也可能每隔几分钟,由外部事件触发,向服务器上的 TIdCmdTCPServer 发送另一个字符串并等待响应。

我是网络新手。为了简单起见,我想进行一个阻塞调用(因为系统是如此简单) - 客户端向服务器发送一条消息并阻塞,等待回复(或超时)。

我可以这样做吗?还是我需要缓冲我的消息,并在发送下一条之前在客户端等待回复(或超时)?

Windows 7 专业版、印地 10、德尔福 XE2

4

1 回答 1

2

Indy 仅使用阻塞 I/O,因此您要求的是可行的,实际上这正是 Indy 在大多数情况下的工作方式。只需执行写操作并等待它返回,然后您就可以立即执行读取操作。事实上,由于您已经TIdCmdTCPServer在服务器端使用,您可以TIdTCPClient.SendCmd()在客户端使用发送命令并在单个操作中等待其响应。

请注意,由于 Indy 正在阻塞,因此TIdTCPClient如果您不想阻塞主线程,则应在工作线程中使用,这会使 UI 在TIdTCPClient忙碌时无响应。

于 2012-08-14T19:42:09.143 回答