如何使用C#檢查Windows Phone 7中的3G,WiFi,EDGE,蜂窩網絡?如何檢查Windows Phone 7中的3G,WiFi,EDGE,蜂窩網絡?
回答
如果你可以用芒果(7.1)SDK,如果你的方案涉及到使用套接字,有一個簡單的方式來獲得該連接的NetworkInterfaceType /子類型信息,您剛纔提出:
NetworkInterfaceInfo netInterfaceInfo = socket.GetCurrentNetworkInterface();
var type = netInterfaceInfo.InterfaceType;
var subType = netInterfaceInfo.InterfaceSubtype;
無需以使用NetworkInterface.NetworkInterfaceType屬性(這出乎意料地需要30秒才能返回);無需爲了確定網絡類型而觸發主機名解析;無需收聽網絡更改事件。
當然,這與DeviceNetworkInformation.IsNetworkAvailable或NetworkInterface.GetIsNetworkAvailable()一起使用效果最好 - 無論您是否在網絡上,這些調用都會立即返回。如果是的話,你先連接插座,並在連接時詢問問題:-)
最後一點:謹防Mango的DeviceNetworkInformation.IsWiFiEnabled - 我認爲它會返回我是否在無線網絡上,但它會返回無論在手機設置中是否打開或關閉無線網絡......都不是非常有用。
看看騙子的工具,他們對這個班PhoneNetworking:
http://wildermuth.com/2011/03/05/Phoney_Tools_Updated_(WP7_Open_Source_Library)
其開源,你可以查看源代碼
不幸的是,API的不提供非常有限有關您擁有的網絡連接種類的信息。您可以判斷您是否使用3G,Cellular或以太網(即USB連接到PC),但這是您獲得的所有信息。
看看這個更多信息Better way to check for an network connection on WP7
我怎麼知道我是否在3G上? – 2013-02-12 12:15:39
由於芒果版本(Beta 2和RC)的,這些信息現在可用,但它需要你真正建立連接,大概是因爲它不檢查,直到有些東西需要它。
您可以執行DNS解析(請參閱下文)或使用GetCurrentNetworkInterface
WebRequest擴展方法,如果請求尚未連接,將引發InvalidOperationException。
在Microsoft.Phone.Net.NetworkInformation
命名空間中還有一些事件需要關注,但是如果這些事件在連接建立之前沒有觸發,我不會感到驚訝。
有趣的是,您似乎也可以使用SetNetworkPreference和SetNetworkRequirement擴展方法在每個連接的基礎上選擇或要求使用擴展方法,但它不會超越wifi和蜂窩。
DeviceNetworkInformation.ResolveHostNameAsync(
new DnsEndPoint("microsoft.com", 80),
new NameResolutionCallback(nrr =>
{
var info = nrr.NetworkInterface;
var type = info.InterfaceType;
var subType = info.InterfaceSubtype;
}), null);
NetworkInterfaceType
爲(WIFI/GSM)和NetworkInterfaceSubType
(邊緣/ 3G)的枚舉值可在MSDN。
沒有插座:
var currentList = new NetworkInterfaceList().Where(i => i.InterfaceState == ConnectState.Connected).Select(i => i.InterfaceSubtype);
if (currentList.Contains(NetworkInterfaceSubType.WiFi))
Debug.WriteLine("WiFi");
if (currentList.Intersect(new NetworkInterfaceSubType[]
{
NetworkInterfaceSubType.Cellular_EVDO,
NetworkInterfaceSubType.Cellular_3G,
NetworkInterfaceSubType.Cellular_HSPA,
NetworkInterfaceSubType.Cellular_EVDV,
}).Any())
Debug.WriteLine("3G");
if (currentList.Intersect(new NetworkInterfaceSubType[]
{
NetworkInterfaceSubType.Cellular_GPRS,
NetworkInterfaceSubType.Cellular_1XRTT,
NetworkInterfaceSubType.Cellular_EDGE,
}).Any())
Debug.WriteLine("2G");
在某些地方輸入錯誤NetworkInterfaceSubtype應該是NetworkInterfaceSubType – giacoder 2014-12-03 12:53:06
希望它現在已經修復。 – 2014-12-04 13:14:58
爲Windows手機應用程序獲取網絡數據即它連接到以太網,WiFi或蜂窩網絡也越來越亞型即2G或3G網絡下面的程序都可以使用。
Using Microsoft.Phone.Net.NetworkInformation
Using Microsoft.Phone.net.NetworkInfromation
var Newlist = new NetworkInterfaceList();
foreach (NetworkInterfaceInfo x in Newlist)
{
if(x.InterfaceState==ConnectState.Connected)
{
if(x.InterfaceSubtype.Equals(NetworkInterfaceSubType.WiFi))
{
Interface = x.InterfaceType.ToString();
SubInterface = x.InterfaceSubtype.ToString();
break;
}
else if(x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_EVDO) || x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_3G) || x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_HSPA) || x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_EVDV))
{
Interface = x.InterfaceType.ToString();
SubInterface= 「3G Network」;
break;
}
else if(x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_GPRS) || x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_1XRTT) || x.InterfaceSubtype.Equals(NetworkInterfaceSubType.Cellular_EDGE))
{
Interface = x.InterfaceType.ToString();
SubInterface= 「2G Network」;
break;
}
else
{
Interface = 「Ethernet」;
SubInterface= 「Unknown」 ;
break;
}
}
else
{
Interface=」not connected」;
SubInterface=」unknown」;
}
這裏Interface和SubInterface給出了網絡信息。
- 1. Windows 10 UWP - C#:如何檢查網絡類型(EDGE/3G/LTE),不僅是蜂窩與WLAN?
- 2. 使用iOS 7 SDK監控可用的wifi SSID /蜂窩網絡?
- 3. Windows Phone - 使用蜂窩網絡的位置數據
- 4. 如何在android中檢查蜂窩網絡連接
- 5. Android:通過蜂窩網絡和WiFi進行位置檢測
- 6. 如何檢查WiFi或3G網絡可在Android設備上
- 7. 檢測3G或Wifi網絡恢復
- 8. 如何從XCode,iPhone中檢索蜂窩網絡信息?
- 9. iOS連接到蜂窩網絡
- 10. windows phone 8當前網絡在數據庫中的強度,用於蜂窩和WiFi
- 11. 檢查消息將使用的iMessage或蜂窩網絡
- 12. Windows Phone 7網絡服務
- 13. Windows 10 UWP - 檢測當前的互聯網連接是Wifi還是蜂窩?
- 14. 禁用蜂窩網絡通信
- 15. 以編程方式檢測iOS中的蜂窩網絡類型
- 16. 檢查用戶是否連接到wifi或蜂窩
- 17. Windows 10 UWP - 如何檢查蜂窩數據是否啓用?
- 18. windows phone 7 wifi,藍牙
- 19. 如何檢查wifi/3g是否啓用?
- 20. 如何檢查互聯網是否可用在Windows Phone 7中?
- 21. 檢測Windows Phone 7中的背景和強調顏色網絡
- 22. 在Windows Phone 7中檢索當前基於網絡的位置
- 23. 如何使用蜂窩網絡從xcode中獲取數據
- 24. iPhone活躍網絡類型(2G,3G,WIFI)
- 25. Android檢查設備是否能夠連接到蜂窩數據網絡
- 26. 蜂窩網絡如何驗證設備的身份?
- 27. 是否可以檢測蜂窩網絡是否可用?
- 28. Windows phone 8,檢查wifi是否打開?
- 29. Parse.com NSURLErrorDomain代碼= -1003蜂窩不在wifi
- 30. 在Android MyTouch 3g上安裝Windows Phone 7?
我會說DeviceNetworkInformation.IsCellularDataEnabled相同。即使手機中沒有SIM卡,它也會返回true。似乎只是關於天線的狀態,而不是實際的連接。 – djcouchycouch 2013-05-17 17:42:16
如何獲取套接字? – Yoda 2014-02-07 01:52:27