问题过于复杂。一个非常直接的解决方案是重新设计为Uwe和David建议:
(1)工人应用程序。 (2)长时间运行的TcpServer,等待客户端并调用worker (3)客户。
========================
我想构建一个SampleApp
,其功能如下:
SampleApp
正在运行; TcpServer
,TcpClient
,将某个命令从其TcpClient
传递到TcpServer
,完成工作,关闭TcpServer
},并退出; TcpClient
,将命令传递给其他人TcpServer
并退出。 (另一个TcpServer
将完成工作。)SampleApp
仍在运行时,可能会启动多个SampleApp
。我不知道如何实际解决这个问题,例如:
SampleApp
正在运行。两个SampleApp
同时启动(几乎)。如何保证只启动一个TcpServer? (没有“全局列表”来注册传入的“玩家”。)任何见解都表示赞赏!
答案 0 :(得分:0)
如果您想主要使用它来在单个计算机上的进程之间进行通信(在单个用户会话中),那么您应该喜欢ActiveX Automation Objects。创建使用LocalServer的COM对象将为您启动和停止“服务器”进程。
在此处查看更多内容:http://docwiki.embarcadero.com/RADStudio/XE4/en/Creating_an_Active_Server_Object
如果您坚持使用TTcpServer,当两个进程同时启动时,仍然只允许一个进程绑定到某个TCP端口,另一个进程在TTcpServer上调用Listen时会出现异常。