网卡-热点搜索不到或者无法连接问题

大屏设置网卡开启热点后,经常收到反馈,手机端无法搜索到大屏热点、或者手机连接大屏热点失败

这类问题一般有以下几类情况:

  1. 物理网卡IP与热点网卡IP相同

  2. 热点网卡IP,非正常热点IP(192.168.137.X)

热点IP我们一般定为192.168.137.X,192.168.137.X是一个保留的IPv4地址范围。其中,X代表了特定设备在局域网中的唯一标识,通常是1到254之间的一个数字。

这个地址范围通常被用作局域网内部的私有IP地址,如Wi-Fi热点或者一些家庭网络

设置此私有IP地址范围为热点IP,可以避免与现有网络冲突。同时比较有特征的IP段可以让用户将局域网内的设备划分到特定的子网中,有利于管理和监控设备的连接和通信

针对上面2类情况,修复热点IP,

  1. 物理网卡IP与热点网卡IP相同

-- 在物理网卡设置了某个热点IP如192.168.137.1时,热点网卡IP需要规避此IP。如果局域网中已经有DHCP服务器在分配IP地址,而热点设备也在尝试分配IP地址,可能会引起IP地址分配冲突,导致网络连接问题。虽然不建议物理网卡分配此IP,但出现问题我们貌似只能通过热点虚拟网卡来规避此冲突了

  1. 热点网卡IP,非热点IP(192.168.137.X)

-- 热点为私有网络,建议用热点专有IP域,可以减少与局域网正常分配IP之间的冲突。

以下是修复代码,团队内部开发的网卡一部分业务逻辑:

复制代码
 1     /// <summary>
 2     /// 修复IP冲突
 3     /// </summary>
 4     public async Task RepairIpConflictAsync()
 5     {
 6         var allNetworks = await GetAllNetworkInfosAsync();
 7         // 获取到当前虚拟网卡
 8         var virtualAdapter = allNetworks.FirstOrDefault(x => x.IPEnabled &&
 9                                                            x.Description.Contains(VirtualWifiDescription));
10 
11         if (virtualAdapter == null) return;
12         //实际网卡是否使用了热点IP
13         var physicalCardErrorIps = new List<string>();
14         foreach (var x in allNetworks.Where(x => !x.Description.Contains(VirtualWifiDescription)))
15         {
16             physicalCardErrorIps.AddRange(x.Ipv4Array.Where(ip => ip.StartsWith("192.168.137.")));
17         }
18         var isVirtualCardCorrectIp = virtualAdapter.Ipv4Array.FirstOrDefault(x => x.StartsWith("192.168.137.")) != null;
19         //物理网卡未使用热点IP,且虚拟网卡在使用热点IP,不需要修复IP
20         if (physicalCardErrorIps.Count == 0 && isVirtualCardCorrectIp)
21         {
22             return;
23         }
24         var defaultHotspotIp = "192.168.137.1";
25         if (physicalCardErrorIps.Count > 0)
26         {
27             for (var i = 1; i < 255; i++)
28             {
29                 var ip = $"192.168.137.{i}";
30                 if (physicalCardErrorIps.Contains(ip)) continue;
31                 defaultHotspotIp = ip;
32                 break;
33             }
34         }
35         var networkAdapter = new NetworkAdapterController(virtualAdapter.SettingID);
36         networkAdapter.SetIPAddress(defaultHotspotIp, "255.255.255.0");
37     }

先获取当前虚拟网卡"Microsoft Wi-Fi Direct Virtual Adapter",virtual adapter一般会有多张,选择IPEnabled=true的那张(在网络适配器上绑定并启用 TCP/IP)。

物理网卡可能存在使用热点IP,所以接下来获取所有使用热点IP的IP列表,用于后续给热点网卡规避这些IP。

虚拟网卡是否采用热点IP,未采用的话也需要重新设置下。

所以,根据网卡ID标识,设置此虚拟网卡为192.168.137.X范围的热点IP、以及默认掩码"255.255.255.0"。同时跳过物理网卡已经使用的热点IP,规避IP冲突

相关推荐
蓝天居士3 天前
RTL8367RB芯片介绍(17)
网卡·设备驱动·芯片资料
蓝天居士10 天前
RTL8367RB芯片介绍(8)
网卡·设备驱动·芯片资料
蓝天居士12 天前
RTL8367RB芯片介绍(6)
网卡·设备驱动·芯片资料
蓝天居士13 天前
RTL8367RB芯片介绍(4)
网卡·设备驱动·芯片资料
秋天之落叶2 个月前
技嘉B760M gaming AC WIFI 主板自带瑞昱2.5G有线网卡的问题
网卡
zzc9216 个月前
根据Wireshark捕获数据包时间和长度绘制路由器发送给电脑数据的信号波形
网络·wireshark·智能路由器·网卡·packets·信号波形·192.168.1.103
9527华安7 个月前
FPGA实现40G网卡NIC,基于PCIE4C+40G/50G Ethernet subsystem架构,提供工程源码和技术支持
fpga开发·架构·网卡·ethernet·nic·40g·pcie4c
小锋学长生活大爆炸10 个月前
【教程】检查RDMA网卡状态和测试带宽 | 附测试脚本
运维·服务器·网络·ubuntu·网卡·rdma
GLAB-Mary1 年前
电脑有两张网卡,如何实现同时访问外网和内网?
电脑·网卡·外网·内网
与海boy1 年前
CentOS7网络配置,解决不能联网、ping不通外网、主机的问题
linux·网络·网卡