首页 文章

UDP组播服务器可以在LAN外发送数据包吗?

提问于
浏览
1

我正在制作一个多人游戏,玩家的动作通过网络发送,他们的位置存储在服务器中 . 我被告知UDP是最好的,因为它不依赖于持续连接,如果客户端错过了一个数据包也没关系 . 客户端可以在任何路由器上,不一定在服务器的LAN内 .

是否可以设置客户端可以连接的服务器,它将向所有服务器发送附近对象/播放器位置的定期更新?

我不想将数据包发送到每个客户端,我听说多播可以解决这个问题,但我看到的每个例子都只能通过本地网络发送数据包 . 我可以组播过去的路由器,如果是,我怎么能用Java做到这一点? (并向我解释,因为我不知道我在做什么,这主要是真的)

防爆 .

服务器的IP地址为71.10.200.133

客户端A的IP地址为38.49.339.293

客户B的IP地址为37.28.487.388

...

客户端Z的IP地址为43.38.382.949

客户端A向服务器发送有关玩家位置的更新

服务器向B-Z发送更新,而不向每个客户端迭代数据包 . 我如何做到这一点(如果可能的话)?

3 回答

  • 1

    当且仅当路由器允许时,多播才会遍历路由器 . 除非您控制着您和客户之间的所有路由器,否则您的问题的答案是“不” .

  • 0

    多播数据包是广播,因此它们到达该子网上的每个节点 . 对于您在Web上发送多播数据包不是一种有效或智能的数据发送方式 .

    对于基于LAN的流量:

    组播很好

    但是,对于互联网流量,我建议制作一个:

    UDPClient

    要么

    TCPClient

    基于互联网的流量和可能的基于LAN的组播(混合一点) .

    For internet traffic: 请记住,客户端需要首先启动连接,因为大多数路由器(家庭)都有防火墙阻止所有新的外部到内部流量 . 所以创建一个套接字来监听任何传入连接的指定端口/端口,并从那里使用哪种分组广播/发送方式你喜欢

  • 0

    如果您具备此功能,还可以选择使用多播代理或第2层VPN . L2TP,https://en.wikipedia.org/wiki/Layer_2_Tunneling_Protocol第2层VPN将中继单播和多播数据包 . 这基本上允许您像上面提到的EJP一样控制路由器 . 这个问题也是3岁,所以你现在已经想办法做到这一点 .

相关问题