Qt那些事0.0.27 之 QUdpSocket组播通讯

2021-02-20 13:50发布

刚刚写的因为网断了就丢了,不想写了。


关于组播通信失败,大概率因为多网卡,通过ipconfig可以查看具体网卡情况。

C:\WINDOWS\system32>ipconfig
无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::--------78%18
   IPv4 地址 . . . . . . . . . . . . : 192.168.3.165
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.3.1

以太网适配器 本地连接* 12:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::---------620%3
   IPv4 地址 . . . . . . . . . . . . : 3.3.0.154
   子网掩码  . . . . . . . . . . . . : 255.255.0.0

通过wireshark抓包发现,走组播的数据包是通过3.3.0.154接口发出。因此,查询相关知识,window系统,网络路由是自动选择,因此最后通过修改路由表解决此问题。

C:\WINDOWS\system32>route print
===========================================================================
接口列表
 19...8c------- 96 ......Realtek PCIe GBE Family Controller
  4...0a -------04 ......VirtualBox Host-Only Ethernet Adapter
					...
 18...70 -------- e9 ......Realtek 8821CE Wireless LAN 802.11ac PCI-E NIC
  3...00-------48 ......Iceflow Network Adapter
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      192.168.3.1    192.168.3.165     50
          3.3.0.0      255.255.0.0            在链路上         3.3.0.154    311
        3.3.0.154  255.255.255.255            在链路上         3.3.0.154    311
      3.3.255.255  255.255.255.255            在链路上         3.3.0.154    311
     192.168.56.1  255.255.255.255            在链路上      192.168.56.1    281
                              ...
  255.255.255.255  255.255.255.255            在链路上         3.3.0.154    311
  255.255.255.255  255.255.255.255            在链路上      192.168.56.1    281
  255.255.255.255  255.255.255.255            在链路上     192.168.3.165    306
===========================================================================

通过route add,新增一条路由信息,确定发往224.1.1.1(掩码240.0.0.0)使用网关192.168.3.1即可。在先前的路由表中会多一条记录。只需要软件重启,不需要重启计算机。

设计组播网段为224.1.1.1,

C:\WINDOWS\system32>route add 224.0.0.0 mask 240.0.0.0 192.168.3.1 -p
 操作完成!

如果mask(掩码)没有计算正确,计算机(有可能)会自动添加所有接口,需要使用route delete 224.0.0.0删除掉。如果正确,会如下新增一条信息。

   192.168.56.255  255.255.255.255            在链路上      192.168.56.1    281
        224.0.0.0        240.0.0.0      192.168.3.1    192.168.3.165     51
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331

参考链接:多网卡指定网卡进行UDP通信(添加静态路由解决双网卡问题 )全记录

标签: