解决多网卡环境下使用特定网卡广播UDP消息的问题

多网卡环境下发送UDP广播到特定网络通常有以下几种方式:

  1. 将socket绑定到特定网卡ip;
  2. 使用socket选项;
  3. 遍历网卡;
  4. 设置路由表。

绑定到特定IP

创建socket后将其绑定到特定IP地址,则发送广播详细的时候会通过此网卡发送。如果我们的IP地址都不是固定的,那么这种方式就不可用了。

使用socket选项

TBD

遍历网卡

TBD

设置路由表

如果socket没有绑定特定ip,那么使用哪个网卡发送UDP广播由操作系统根据路由选择,这个结果是不确定的。所以我们可以通过创建路由记录来达到使用特定网卡发送的目的。

在Windows下,通过router print命令可以查看路由表信息。通过router add命令可以添加一条新的路由记录。举例:

router add -p 255.255.255.255 mask 255.255.255.0 192.168.40.1

这条命令把广播地址路由到192.168.40.1这个地址上,这个地址是网卡所在子网的网关地址,参数-p表示创建永久路由,即重启不会丢失。

你可能感兴趣的:(网络编程)