Tidtcpserver在多端口上进行侦听?

时间:2017-01-18 14:04:06

标签: indy indy10

好吧我试图理解这种方法,假设我已经运行了2台服务器

服务器A位于Ip 1.1.1.1和端口36663上 服务器B在ip 2.2.2.2和端口54223

我要求能够理解这种方法

我可以让服务器A上的客户端能够与服务器B上的客户端通信吗? 例如客户端在服务器A上连接并希望将一些数据发送到连接到服务器B的客户端,这可以使用indy tcp服务器完成吗?

如果答案是肯定的,那么一个例子将对完全理解这种方法有所帮助。

我在不同的机器上有2台服务器

1台机器有一些网络问题,另一台网络有良好的网络。

这里的逻辑是当客户端到serverA需要超过20秒才能连接时,在这20秒内尝试重新连接到其他服务器ip并能够与已经在serverA上连接的客户端进行通信

1 个答案:

答案 0 :(得分:1)

TIdTCPServer具有Bindings属性,该属性是服务器侦听的IP /端口对的集合。您可以让一个TIdTCPServer对象侦听多个IP /端口对,或者您可以使用多个TIdTCPServer对象侦听不同的对,在同一台计算机上

无论哪种方式,连接的客户端都存储在TIdTCPServer.Contexts属性中。

当客户端想要将数据发送到另一个客户端时,无论它连接到哪个服务器IP /端口,您所要做的就是遍历相应Contexts对象的TIdTCPServer列表直到找到目标客户端的TIdContext对象,然后您才能访问其Connection.IOHandler属性。

另一方面,如果在不同的计算机上运行单独的TIdTCPServer个对象,则客户端无法直接与另一台服务器上的客户端通信。您必须在两台服务器之间建立连接,然后根据需要通过该连接代理任何客户端到客户端的数据。