如何使用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. Android:通过蜂窝网络和WiFi进行位置检测
- 3. 如何检查WiFi或3G网络可在Android设备上
- 4. 检测3G或Wifi网络恢复
- 5. 如何从XCode,iPhone中检索蜂窝网络信息?
- 6. windows phone 8当前网络在数据库中的强度,用于蜂窝和WiFi
- 7. 检查消息将使用的iMessage或蜂窝网络
- 8. Windows Phone 7网络服务
- 9. 以编程方式检测iOS中的蜂窝网络类型
- 10. 检查用户是否连接到wifi或蜂窝
- 11. 如何检查wifi/3g是否启用?
- 12. 检测Windows Phone 7中的背景和强调颜色网络
- 13. 在Windows Phone 7中检索当前基于网络的位置
- 14. 如何使用蜂窝网络从xcode中获取数据
- 15. iPhone活跃网络类型(2G,3G,WIFI)
- 16. Windows phone 8,检查wifi是否打开?
- 17. 蜂窝网络如何验证设备的身份?
- 18. 是否可以检测蜂窝网络是否可用?
- 19. 在Android MyTouch 3g上安装Windows Phone 7?
- 20. 使用Windows Phone 7检测网络上的计算机
- 21. 在Android中检查wifi网络
- 22. 如何在连接Wi-Fi网络时使用蜂窝数据?
- 23. SIP如何在蜂窝网络上工作?
- 24. 如何在'无蜂窝网络可用'时调用方法
- 25. 如何打开/关闭蜂窝网络Android?
- 26. WINDOW PHONE 7中的WiFi Api
- 27. 检查iPhone网络设置 - 启用3G
- 28. 如何发现Windows Phone 7上的本地网络资源
- 29. iPhone EDGE/3G网络端口范围?有人知道吗?
- 30. 如何查找任何设备上可用的网络是EDGE还是WiFi?
我会说DeviceNetworkInformation.IsCellularDataEnabled相同。即使手机中没有SIM卡,它也会返回true。似乎只是关于天线的状态,而不是实际的连接。 – djcouchycouch 2013-05-17 17:42:16
如何获取套接字? – Yoda 2014-02-07 01:52:27