如何绑定到正确的UDP通信地址和端口?

时间:2015-12-24 14:24:24

标签: sockets networking

我建了一个局域网,路由器是192.168.1.1,我的硬件是192.168.1.10,它发送的UDP报文是192.168.1.105:14455。

我的电脑也在这个局域网中。其IP地址由路由器随机分配。我想收听我的硬件发送的数据包192.168.1.10。

目前,我将我的PC地址设置为192.168.1.105并绑定到0.0.0.0:14455。

但是,如果我没有绑定到0.0.0.0来监听所有地址,那么我应该绑定哪个地址(x.x.x.x:14455)来监听我的硬件?

此外,如果我要求硬件通过网络进行广播。我应该如何绑定我的电脑(x.x.x.x:14455?)?

2 个答案:

答案 0 :(得分:1)

对于单播,您应该绑定到INADDR_ANY,或绑定到发件人使用的特定IP地址(仅在PC上有多于IP的情况下)。对于广播,您应始终绑定到INADDR_BROADCAST,否则您可能看不到广播数据包,具体取决于实现。

答案 1 :(得分:1)

  

我的电脑也在这个局域网中。其IP地址由路由器随机分配。 ...目前,我将我的PC地址设置为192.168.1.105

这是一个矛盾。 PC的IP由路由器动态分配,或者在PC的网络适配器上静态分配。除非您将路由器配置为始终根据PC的网络适配器的mac地址为PC分配相同的IP。

  

但是,如果我没有绑定到0.0.0.0来监听所有地址,那么我应该绑定哪个地址(x.x.x.x:14455)来监听我的硬件?

您必须绑定到当前分配给连接到数据包来自的网络的网络适配器的任何IP地址。因此,如果为您的PC分配了192.168.1.105,那么您将绑定到1​​92.168.1.105:14455。

  

此外,如果我要求硬件通过网络进行广播。我应该如何绑定我的电脑(x.x.x.x:14455?)?

适用相同的规则。您可以绑定到0.0.0.0以侦听所有本地IP,也可以绑定到连接到广播将来自的网络的特定IP。