我想创建一个三向沟通系统,其中各方都有平等的权利,与合作伙伴有两个沟通 channel 。
该程序是分散的,每台机器都运行相同的代码,其中有一个包含三个 IP 地址的列表,每个 IP 地址代表一台机器。对于每台计算机,合作伙伴的 IP 地址是通过查看其自己的 IP 地址并使用列表中的其他两个来确定的。
现在没有预先确定机器打开的顺序,除了设置类似的内容之外,还有什么方法可以控制 TCP 通信
'如果您要通话的 IP 地址高于您自己的 IP 地址,请连接到服务器,否则您就是服务器并接受套接字'?
最后,我想要一个 TCPread(port)
,每次来自任何 IP 的消息进入时都会触发,并且 TCPwrite(port, ip, message)
发送消息一条消息。
我的想法是一个 TCPhandler,它存储我计划在程序中使用的每个端口的所有套接字,每个端口一个线程。然后每次执行读取或写入时,它都会检查处理程序中是否有用于端口和 IP 地址的套接字,如果没有,它会向 IP 发送一个套接字并等待响应...我不认为我已经但完全理解整个 TCP 的事情。
最佳答案
如果您不关心连接数量,您可以执行以下操作:
- 每个对等点打开端口并监听传入连接
- 尝试在一段时间内与每个对等点建立连接
因此,您将在每个对等点之间获得两个连接。现在您可以通过以下方式使用它们:
- 传出连接用于发送消息
- 传入连接用于接收消息
关于java - 在没有服务器的情况下建立平等客户端的双向 TCP 通信的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37689889/