【问题标题】:Java TCP Hole PunchingJava TCP 打孔
【发布时间】:2016-12-05 08:47:40
【问题描述】:

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

  1. 服务器:ServerSocket 监听给定端口 1
  2. 客户端:套接字(对象)使用端口 2 连接到端口 1 上的服务器
  3. 一旦建立连接,服务器会保留来自 server.accept() 的 Socket 对象,并在剩余时间内使用它向客户端发送数据
  4. 建立连接后,客户端关闭其 Socket 对象并在端口 2 上打开一个 ServerSocket。服务器现在可以使用端口 1 上的 Socket 对象将数据发送到端口 2。

3. 或 4. 是正确的方法吗?

【问题讨论】:

    标签: java sockets tcp serversocket


    【解决方案1】:

    选项 3。

    选项 4 不起作用,因为一旦客户端关闭套接字,双方都会关闭。服务器必须通过 NAT 防火墙启动连接,这显然行不通。

    【讨论】:

      猜你喜欢
      • 2015-02-10
      • 2012-02-07
      • 1970-01-01
      • 2011-09-19
      • 2014-03-08
      • 2017-01-25
      • 2014-06-08
      • 2014-12-28
      • 2013-01-15
      相关资源
      最近更新 更多