Java TCP打孔

时间:2016-07-30 22:30:55

标签: java sockets tcp serversocket

我目前正在开发一款在线游戏。在游戏中,有必要通过TCP和UDP将数据从服务器发送到客户端。实现UDP-Hole Punching很容易,但我不确定如何实现TCP-hole打孔:

  1. 服务器:侦听给定端口1的ServerSocket
  2. 客户端:Socket(对象)使用端口2
  3. 连接到端口1上的服务器
  4. 建立连接后,服务器将Socket对象与server.accept()保持一致,并使用它将数据发送到客户端剩余的时间
  5. 建立连接后,客户端关闭其Socket对象并在端口2上打开ServerSocket。服务器现在可以使用端口1上的Socket对象向端口2发送数据。
  6. 3.或4.是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

选项3.

选项4不起作用,因为一旦客户端关闭套接字,BOTH端就会关闭。服务器必须通过NAT防火墙启动连接,这显然无法正常工作。