【发布时间】:2023-03-27 07:11:01
【问题描述】:
我正在做一个包含 Udp 和 Tcp 套接字服务器客户端的软件。我希望只有当客户端连接到 TCP 服务器时,Udp 才会响应它。我知道该怎么做,但我有一个问题——如果有人在同一个 LAN 上使用两台不同的计算机,那么外部 IP 将是相同的,因此我在检查 tcp/udp 连接时会遇到问题。 所以我一开始坚持当客户端连接到我的服务器时,他会发送他的内部 IP,我会用它来检查它是否真的是一台计算机或更多。
但我不知道是否有更简单的方法,因为那个方法相当复杂。有什么想法吗?
【问题讨论】:
-
不需要“发送内部IP”。对于 TCP 连接,这是由 NAT 进行的。两个连接指向同一个外部 IP,但 NAT 记住一个连接到内部 IP“A”,另一个连接到“B”。
-
很好,我不知道,好帖子。
-
如果您还需要通过 NAT 的 UDP 连接,而不是搜索 UDP hole punching
-
@i486 谢谢 :) 但在我的检查中,我将检查外部地址以查看它们是否是来自同一网络的多个连接,我需要将 TCP ip 与 UDP ip 进行比较,看看是否有一个匹配,如果是这样 - udp 服务器将处理用户,因为他已连接到 TCP。所以...我需要以某种方式更改检查?
-
为每个连接分配一个 ID,并使 UDP 数据包包含该 ID。匹配 ID,而不是“内部 IP”。内部 IP 没有很好的定义。一台计算机可以有几十个。