大屏Windows设置网卡开启热点后,经常收到反馈,手机端无法搜索到大屏热点、或者手机连接大屏热点失败
这类问题一般有以下几类情况:
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,但出现问题我们貌似只能通过热点虚拟网卡来规避此冲突了
2. 热点网卡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冲突
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容