【问题标题】:How to send UDP packets to clients who are on the same LAN如何将 UDP 数据包发送到同一 LAN 上的客户端
【发布时间】:2011-04-02 02:48:21
【问题描述】:

我目前正在开发一款游戏的 UDP 网络。

假设有两个玩家在同一个 NAT/LAN 上。因此,它们共享相同的外部 IP。他们都加入了同一个游戏服务器,该服务器位于另一个位置并且具有不同的外部 IP。

游戏服务器如何通过 LAN 向特定玩家发送 UDP 数据包?

当每个玩家都在不同的局域网上时一切都很好,但是当两个或更多人在同一个局域网上时,我不知道如何联系他们。

顺便说一句,我使用的是 C#,但我想这并不重要。

【问题讨论】:

    标签: networking udp lan


    【解决方案1】:

    根据您的描述,我假设他们对服务器的访问是通过 NAT 设备进行的。在这种情况下,您无需执行任何操作,这两个客户端将被视为来自相同的 IP 地址但不同的源端口,因此很容易区分。

    【讨论】:

    • 哦,但是我怎么知道每个客户端使用的端口呢?
    • UDP端口是否必须在客户端网关上转发?
    • 知道如果两个游戏客户端随机选择相同的源端口会发生什么吗?路由器通常会NAT源端口吗?
    • 是的,路由器会,其他地方什么都不会。一开始的 DNS 名称解析是基于 UDP 的,因此这是一个经过良好测试的功能。
    • @asmo 我不明白你的问题。但基本上,只要您将服务器代码建立在您真正收到的(将由 NATting 路由器转换)并且不要试图猜测原始端口和地址是什么,它就可以正常工作。不要将此类信息嵌入协议本身,这是一场噩梦。对于客户端本身而言,位于 LAN 或其他地方的服务器没有任何区别。
    猜你喜欢
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    相关资源
    最近更新 更多