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

如何在WindowsPhone8应用程序中检查Internet连接可用性Share

时间:2023-04-11 01:32:55 C#

如何在WindowsPhone8应用程序中检查Internet连接可用性我正在开发一个WindowsPhone8应用程序。在此应用程序中,我必须连接到服务器以获取数据。所以在连接到服务器之前,我想检查设备是否可以连接互联网。如果互联网连接可用,那么我将只从服务器获取数据,否则我将显示错误消息。请告诉我如何在WindowsPhone8中执行此操作。NetworkInterface.GetIsNetworkAvailable()返回NIC的状态。根据状态,您可以通过以下方式询问是否已建立连接:ConnectionProfile-使用枚举NetworkConnectivityLevel的WindowsPhone8.1类:这段代码应该可以解决问题。boolisConnected=NetworkInterface.GetIsNetworkAvailable();如果(已连接){ConnectionProfileInternetConnectionProfile=NetworkInformation.GetInternetConnectionProfile();NetworkConnectivityLevelconnection=InternetConnectionProfile.GetNetworkConnectivityLevel();如果(连接==NetworkConnectivityLevel.None||连接==NetworkConnectivityLevel.LocalAccess){isConnected=false;}}if(!isConnected)awaitnewMessageDialog("没有互联网连接可用。应用程序的全部功能不可用。").ShowAsync();publicstaticboolcheckNetworkConnection(){varni=NetworkInterface.NetworkInterfaceType;布尔IsConnected=假;如果((ni==NetworkInterfaceType.Wireless80211)||(ni==NetworkInterfaceType.MobileBroadbandCdma)||(ni==NetworkInterfaceType.MobileBroadbandGsm))IsConnected=true;elseif(ni==NetworkInterfaceType.None)IsConnected=false;返回已连接;}调用此函数并检查互联网连接是否可用。您可以使用NetworkInterface.GetIsNetworkAvailable()方法。如果网络连接可用则返回true,否则返回false。如果您在PCL中,请不要忘记使用Microsoft.Phone.Net.NetworkInformation或使用System.Net.NetworkInformation添加。由于这个问题作为检查互联网可用性的谷歌搜索的第一个结果出现,我将给出WindowsPhone8.1XAML答案。与8相比,它有一些不同的API。//获取互联网连接配置文件stringconnectionProfileInfo=string.Empty;尝试{ConnectionProfileInternetConnectionProfile=NetworkInformation.GetInternetConnectionProfile();if(InternetConnectionProfile==null){NotifyUser("未连接到Internetn");}else{connectionProfileInfo=GetConnectionProfile(InternetConnectionProfile);NotifyUser("Internet连接配置文件="+connectionProfileInfo);}}catch(Exceptionex){NotifyUser("发生意外异常:"+ex.ToString());}如需更多阅读,请访问MSDN如何检索网络连接...您可以使用NetworkInformation.GetInternetConnectionProfile获取当前使用的配置文件,从中可以计算连接级别。更多信息GetInternetConnectionProfilemsdn有关如何使用它的示例。privatevoidYourMethod(){if(InternetConnection){//你的代码连接到服务器}}publicstaticboolInternetConnection(){returnNetworkInformation.GetInternetConnectionProfile().GetNetworkConnectivityLevel()>=NetworkConnectivityLevel.InternetAccess;}这就是我做的...classInternet{staticDispatcherTimerdispatcherTimer;公共静态布尔可用=假;publicstaticasyncvoidStartChecking(){dispatcherTimer=newDispatcherTimer();dispatcherTimer.Tick+=newEventHandler(IsInternetAvailable1);dispatcherTimer.Interval=newTimeSpan(0,0,10);//10秒或更快awaitIsInternetAvailable(null,null);dispatcherTimer.Start();}privatestaticasyncvoidIsInternetAvailable1(objectsender,EventArgse){awaitIsInternetAvailable(sender,e);}privatestaticasyncTaskIsInternetAvailable(objectsender,EventArgsev){stringurl="https://www.google.com/";varhttpWebRequest=(HttpWebRequest)WebRequest.Create(uRL);httpWebRequest.ContentType="text/plain;charset=utf-8";httpWebRequest.Method="POST";使用(varstream=awaitTask.Factory.FromAsync(httpWebRequest.BeginGetRequestStream,httpWebRequest.EndGetRequestStream,null)){stringjson="{"302000001"}";//发布任何内容byte[]jsonAsBytes=Encoding.UTF8.GetBytes(json);等待stream.WriteAsync(jsonAsBytes,0,jsonAsBytes.Length);WebClienthc=newWebClient();hc.DownloadStringCompleted+=(s,e)=>{try{if(!string.IsNullOrEmpty(e.Result)){可用=true;}else{可用=false;}}catch(Exceptionex){if(exisTargetInvocationException){Available=false;}}};hc.DownloadStringAsync(新Uri(url));由于WindowsPhone8无法检查互联网连接,您需要通过发送POSTHTTP请求来完成此操作,您可以通过将其发送到您想要实现它的任何网站来完成。我选择了google.com。然后,每10秒或更短时间检查一次以刷新连接状态。对Web请求的响应可能会有一些延迟。因此,对于某些应用程序,此方法可能不够快。这将检查任何设备上的互联网连接。更好的方法是检查始终在线网站的端口80(http流量的默认端口)。以上就是《C#学习教程:如何在WindowsPhone8应用程序中检查Internet连接可用性》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望你多多关注—publicstaticboolTcpSocketTest(){try{System.Net.Sockets.TcpClientclient=newSystem.Net.Sockets.TcpClient(“www.google.com”,80);客户端.Close();返回真;}catch(System.Exceptionex){返回false;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢