大屏設置網卡開啟熱點後,經常收到反饋,手機端無法搜索到大屏熱點、或者手機連接大屏熱點失敗 這類問題一般有以下幾類情況: 1. 物理網卡IP與熱點網卡IP相同 2. 熱點網卡IP,非正常熱點IP(192.168.137.X) 熱點IP我們一般定為192.168.137.X,192.168.137.X是 ...
大屏設置網卡開啟熱點後,經常收到反饋,手機端無法搜索到大屏熱點、或者手機連接大屏熱點失敗
這類問題一般有以下幾類情況:
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 public async Task<bool> RepairIpConflictAsync() 2 { 3 var allNetworks = await GetAllNetworkInfosAsync(); 4 // 獲取到當前虛擬網卡 5 var virtualAdapter = allNetworks.FirstOrDefault(x => x.IPEnabled && 6 x.Description.Contains(VirtualWifiDescription)); 7 8 if (virtualAdapter == null) return false; 9 //物理網卡是否使用了熱點IP 10 var physicalCardErrorIps = new List<string>(); 11 foreach (var x in allNetworks.Where(x => !x.Description.Contains(VirtualWifiDescription))) 12 { 13 physicalCardErrorIps.AddRange(x.Ipv4Array.Where(ip => ip.StartsWith(“192.168.137.”))); 14 } 15 var isVirtualCardCorrectIp = virtualAdapter.Ipv4Array.FirstOrDefault(x => x.StartsWith(“192.168.137.”)) != null; 16 //物理網卡未使用熱點IP,且虛擬網卡在使用熱點IP,無需修複 17 if (physicalCardErrorIps.Count == 0 && isVirtualCardCorrectIp) 18 { 19 return false; 20 } 21 var networkAdapter = new NetworkAdapterController(virtualAdapter.SettingID); 22 for (var i = 1; i < 255; i++) 23 { 24 var ip = $"192.168.137.{i}"; 25 if (physicalCardErrorIps.Contains(ip)) continue; 26 networkAdapter.SetIPAddress(ip, "255.255.255.0"); 27 return true; 28 } 29 return false; 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衝突
作者:唐宋元明清2188 出處:http://www.cnblogs.com/kybs0/ 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連接,否則保留追究法律責任的權利。