Delphi TIdCmdTCPServer和TIdCmdTCPClient是否应一起使用?

Delphi TIdCmdTCPServer和TIdCmdTCPClient是否应一起使用?,delphi,indy,Delphi,Indy,我试图编写一个服务器和一组与服务器对话的客户端。服务器将维护不同客户端的状态,并允许它们在状态发生更改时向中央服务器发出警报。专业客户机将允许控制其他连接的客户机 我将服务器作为一个TIdCmdTCPServer,客户端(目前)使用TIdTCPClient进行连接 如果客户端正在发送和接收命令,是否应使用TIdCmdTCPClient?我已经读到CmdTCPServer和CmdTCPClient并没有真正一起使用——是不是它们不必一起使用 我为这个问题的模糊性道歉,但我才真正开始考虑这个问题,在

我试图编写一个服务器和一组与服务器对话的客户端。服务器将维护不同客户端的状态,并允许它们在状态发生更改时向中央服务器发出警报。专业客户机将允许控制其他连接的客户机

我将服务器作为一个TIdCmdTCPServer,客户端(目前)使用TIdTCPClient进行连接

如果客户端正在发送和接收命令,是否应使用TIdCmdTCPClient?我已经读到CmdTCPServer和CmdTCPClient并没有真正一起使用——是不是它们不必一起使用

我为这个问题的模糊性道歉,但我才真正开始考虑这个问题,在我陷入细节之前,我需要一点头脑清醒

谢谢你的帮助


标记H

也许,您可以从测试开始

在技术上可以同时使用TIdCmdTCPClient和TIdCmdTCPServer,但通常不建议这样做。这些组件设计用于异步处理入站命令。让客户机等待服务器命令是没有意义的,但让服务器同时等待客户机命令是没有意义的。这是一个很好的死锁连接的方法,因为他们都在等待对方的数据,而且都没有先输入就发送任何数据。

TIdTCPServer在Android上没有接收任何数据(错误),Android只能将数据从i tidtcpclient发送到windows TIdTCPServer,而不能反向发送。

这有帮助,但是仍然不是我想要做的。因此我应该将服务器设置为TIdCmdTCPServer,然后任何回复或未经请求的消息都应该由标准的TidCpClient处理,如下面的演示链接中的示例所示?这确实取决于您的通信协议的特定设计。这应该是一个新问题。还显示您从Android上的Windows接收的代码,以及实际错误是什么(超时、异常等)。