在没有服务器的情况下,为同等客户端建立双向TCP通信的最佳方法是什么?

时间:2016-06-07 21:42:57

标签: java multithreading sockets networking tcp

我想建立一个三方沟通系统,每个政党都拥有平等的权利,并有两个沟通渠道给他的伙伴 该程序是分散的,每台机器运行相同的代码,其中有一个包含三个IP地址的列表,每个代表一台机器。对于每台计算机,合作伙伴的IP地址通过查看自己的IP地址并使用列表中的其他两个来确定。

现在没有预定的机器正在打开的顺序,有没有办法控制TCP通信,除了设置类似的东西 '如果您要与之通话的IP地址高于您自己的IP地址,请连接到服务器,否则您就是服务器并接受套接字'?

最后,我想要一个TCPread(port),每次来自任何IP的消息都会触发,TCPwrite(port, ip, message)会发出消息。

我的想法是一个TCPhandler,它存储了我计划在程序中使用的每个端口获得的所有套接字,每个端口有一个线程。然后每次执行读取或写入时,它会检查处理程序中是否有端口和IP地址的套接字,如果没有,它会向IP发送套接字并等待响应...我不认为我是完全了解整个TCP的事情。

1 个答案:

答案 0 :(得分:1)

如果您不关心可以执行以下操作的连接数量:

  • 每个对等端打开端口并侦听传入连接
  • 尝试在一段时间内与每个对等方建立连接

结果,您将在每个对等体之间获得两个连接。现在您可以按照以下方式使用它们:

  • 传出连接用于发送消息
  • 传入连接用于接收消息