当前位置: 首页 > 编程语言 > C#

从WPF-XBAP应用程序检测网络连接?share

时间:2023-04-10 21:09:20 C#

从WPF/XBAP应用程序检测网络连接?有没有办法确定XBAP(浏览器中托管的WPF)应用程序是否具有网络连接?如果没有,用C#和.NET编写的传统Windows客户端如何确定它是否具有连接性?基本上,用例是在通过WiFi连接到内联网的移动笔记本电脑上运行的XBAP应用程序。笔记本电脑将无法连接到Internet。WiFi连接可能存在也可能不存在,具体取决于用户当时所在的位置。GateWayIPAddressInformation应该有效:http://msdn.microsoft.com/en-us/library/system.net.networkinformation.gatewayipaddressinformation(loband).aspx如果您获得网关IP地址并且可以ping(http://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping(loband).aspx),那么您可能已经连接上了。在InitializeComponent()中执行此操作://为NetworkAddressChanged事件添加事件处理程序NetworkChange.NetworkAddressChanged+=newNetworkAddressChangedEventHandler(AddressChangedCallback);这是此事件触发时调用的方法:internalvoidAddressChangedCallback(objectsender,Event//Argse){这是NetworkConnectivity类:以上是C#学习教程:DetectingnetworkconnectionfromWPF/XBAPapplication?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicclassNetworkConnectivity{privateList_ipAddresses=newList();publicNetworkConnectivity(){_ipAddresses=newList();}#region公共属性publicintCountIPAddresses{get{returnthis.IPAddresses.Count;}}publicListIPAddresses{get{_ipAddresses.Clear();//获取所有网络适配器的列表NetworkInterface[]adapters=NetworkInterface.GetAllNetworkInterfaces();foreach(适配器中的网络接口适配器){IPInterfacePropertyesadapterProperties=adapter.GetIPProperties();GatewayIPAddressInformationCollectionaddresses=adapterProperties.GatewayAddresses;//如果此适配器至少有1个IPAddressif(addresses.Count>0){//遍历所有IP地址foreach(GatewayIPAddressInformationaddressinaddresses){_ipAddresses.Add(address.Address);}}}返回_ipAddresses;}}publicboolIsInternetConnected{get{if(this.CountIPAddresses==0){returnfalse;}else{//IPAddress[]ips=ResolveDNSAddress("google.com");//返回PingIPAddressPool(ips);返回PingIP地址(“72.14.204.104”);//GoogleIP}}}#endregion#region公共方法publicIPAddress[]ResolveDNSAddress(stringUrlAddress){IPHostEntryhostInfo=Dns.Resolve(UrlAddress);返回hostInfo.AddressList;}publicboolPingIPAddressPool(IPAddress[]ipAddresses){foreach(IPAddressipinipAddresses){if(PingIPAddress(ip.Address.ToString())){returntrue;}}返回假;}民众boolPingIPAddress(stringip){//PingingIP地址addr=IPAddress.Parse(ip);pingpingSender=newPing();PingOptions选项=newPingOptions();//使用默认的Ttl值128,//但更改碎片行为。选项。不要片段=真;//创建一个要传输的32字节数据缓冲区。字符串数据=“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”;byte[]buffer=Encoding.ASCII.GetBytes(数据);;//等待响应的秒数intattempts=2;//pingattemptsfor(inti=0;i本文摘自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如有转载,请注明出处: