我正在开发一个套接字项目,现在我将为服务器端创建一个 UDP 侦听器。我看过一些例子,但我无法理解;为什么我们必须像“socket.Bind(new IPEndPoint( IPAddress.Any , 3000));”这样绑定 UDP 套接字?即:在 TCP 套接字中,我们只绑定本地 ip,但在 UDP 套接字中,我们绑定 IPAddress.Any。我们为什么要这样做?
编辑:什么是通配符和特定的 IP 地址?我们如何使用它们?
我找到了这个,我想我正在寻找它:)
通配符是一个特殊的本地 IP 地址。它通常表示“任何”,只能用于绑定操作。
此 IP 地址的值为 0.0.0.0。如果您有两个网络适配器,一个 IP 地址为 1.1.1.1,一个 IP 地址为 2.2.2.2,那么您可以创建一个监听套接字并将其绑定到 1.1.1.1,这样套接字就不会绑定到 2.2.2.2。您也可以创建一个监听套接字并将其绑定到 2.2.2.2,这样它就不会绑定到 1.1.1.1。如果您不关心并且希望您的套接字绑定到所有网卡,那么您将其绑定到通配符地址。
另一个特殊值是 127.0.0.1,这意味着只有同一台计算机上的客户端才能连接到您的服务器。
您可以将 TCP 和 UDP 套接字绑定到通配符地址 (INADDR_ANY
或IN6ADDR_ANY_INIT
) 或特定地址。没有理由通常将 TCP 套接字绑定到特定的 IP 地址,而将 UDP 套接字绑定到通配符地址。