UDP套接字绑定任何IP? (通配符 - 特殊)

时间:2013-06-22 10:58:40

标签: c# sockets udp ip bind

我正在开发一个socket项目,现在我将为服务器端创建一个UDP监听器。我看了一些例子,我无法理解这一点;为什么我们必须绑定UDP套接字,如“socket.Bind(new IPEndPoint( IPAddress.Any ,3000));”?即:在TCP套接字中,我们仅绑定本地ip,但在UDP套接字中,我们绑定IPAddress.Any。为什么我们这样做?

编辑:通配符和特定IP地址是什么?我们怎样才能使用它们?

2 个答案:

答案 0 :(得分:1)

我找到了这个,我想我正在寻找它:)

  

通配符是一个特殊的本地IP地址。它通常意味着“任何”和   只能用于绑定操作。

     

此IP地址的值为0.0.0.0。如果你有两个网络   适配器,一个IP地址为1.1.1.1,另一个IP地址为2.2.2.2,   然后你可以创建一个监听套接字并将其绑定到1.1.1.1以便这样做   套接字不会绑定到2.2.2.2。您还可以创建聆听   socket并将其绑定到2.2.2.2,以便它不会绑定到1.1.1.1。如果   你不关心并希望你的套接字绑定到所有网卡,   然后将它绑定到通配符地址。

     

另一个特殊值是127.0.0.1,意味着只有客户端   同一台计算机可以连接到您的服务器。

链接:What does wildcard address in InetSocketAddress mean?

答案 1 :(得分:0)

您可以将TCP和UDP套接字绑定到通配符地址(INADDR_ANYIN6ADDR_ANY_INIT)或特定地址。在将UDP套接字绑定到通配符地址时,通常没有理由将TCP套接字绑定到特定的IP地址。