好吧我试图理解这种方法,假设我已经运行了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上连接的客户端进行通信
答案 0 :(得分:1)
TIdTCPServer
具有Bindings
属性,该属性是服务器侦听的IP /端口对的集合。您可以让一个TIdTCPServer
对象侦听多个IP /端口对,或者您可以使用多个TIdTCPServer
对象侦听不同的对,在同一台计算机上。
无论哪种方式,连接的客户端都存储在TIdTCPServer.Contexts
属性中。
当客户端想要将数据发送到另一个客户端时,无论它连接到哪个服务器IP /端口,您所要做的就是遍历相应Contexts
对象的TIdTCPServer
列表直到找到目标客户端的TIdContext
对象,然后您才能访问其Connection.IOHandler
属性。
另一方面,如果在不同的计算机上运行单独的TIdTCPServer
个对象,则客户端无法直接与另一台服务器上的客户端通信。您必须在两台服务器之间建立连接,然后根据需要通过该连接代理任何客户端到客户端的数据。