网卡-热点搜刮不到或者无法毗连问题

打印 上一主题 下一主题

主题 816|帖子 816|积分 2448

大屏设置网卡开启热点后,经常收到反馈,手机端无法搜刮到大屏热点、或者手机毗连大屏热点失败
这类问题一样平常有以下几类情况:
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. 1     public async Task<bool> RepairIpConflictAsync()
  2. 2     {
  3. 3         var allNetworks = await GetAllNetworkInfosAsync();
  4. 4         // 获取到当前虚拟网卡
  5. 5         var virtualAdapter = allNetworks.FirstOrDefault(x => x.IPEnabled &&
  6. 6                                                                x.Description.Contains(VirtualWifiDescription));
  7. 7
  8. 8         if (virtualAdapter == null) return false;
  9. 9         //物理网卡是否使用了热点IP
  10. 10         var physicalCardErrorIps = new List<string>();
  11. 11         foreach (var x in allNetworks.Where(x => !x.Description.Contains(VirtualWifiDescription)))
  12. 12         {
  13. 13             physicalCardErrorIps.AddRange(x.Ipv4Array.Where(ip => ip.StartsWith(“192.168.137.”)));
  14. 14         }
  15. 15         var isVirtualCardCorrectIp = virtualAdapter.Ipv4Array.FirstOrDefault(x => x.StartsWith(“192.168.137.”)) != null;
  16. 16         //物理网卡未使用热点IP,且虚拟网卡在使用热点IP,无需修复
  17. 17         if (physicalCardErrorIps.Count == 0 && isVirtualCardCorrectIp)
  18. 18         {
  19. 19             return false;
  20. 20         }
  21. 21         var networkAdapter = new NetworkAdapterController(virtualAdapter.SettingID);
  22. 22         for (var i = 1; i < 255; i++)
  23. 23         {
  24. 24             var ip = $"192.168.137.{i}";
  25. 25             if (physicalCardErrorIps.Contains(ip)) continue;
  26. 26             networkAdapter.SetIPAddress(ip, "255.255.255.0");
  27. 27             return true;
  28. 28         }
  29. 29         return false;
  30. 30     }
复制代码
先获取当前虚拟网卡"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冲突
 
出处:http://www.cnblogs.com/kybs0/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文毗连,否则保留追究法律责任的权利。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表