Java TCP Hole Punching
问题描述:
我目前正在开发一个在线游戏。在游戏中,需要通过TCP和UDP将数据从服务器发送到客户端。实现UDP-冲孔很容易,但我真的不知道如何实现TCP孔打孔:Java TCP Hole Punching
- 服务器:监听指定端口1
- 客户端上的ServerSocket:插座(对象)连接到服务器上端口1使用端口2
- 建立连接后,服务器将server对象从server.accept()中保留下来,并使用它在剩余时间向客户端发送数据
- 建立连接后,客户端关闭它的Socket对象并在端口2上打开一个ServerSocket。服务器现在可以使用端口1上的Socket对象将数据发送到端口2上。
是3.还是4.正确的路要走?
答
选项3
选项4一旦客户关闭套接字双方关停不会因为工作。服务器将不得不通过NAT防火墙启动连接,这显然不起作用。