当前位置:  开发笔记 > 开发工具 > 正文

使用.NET检测互联网连接的最佳方法是什么?

如何解决《使用.NET检测互联网连接的最佳方法是什么?》经验,为你挑选了2个好方法。

我有一个Windows窗体应用程序.当用户为我的应用程序导入许可证时,我想"打电话回家"(点击网页上的aspx页面)并注册许可证信息.

问题是用户可能没有在那时工作的互联网连接.我想先测试一下.检测用户是否有可用的互联网连接的最佳方法是什么?



1> SunriseProgr..:

在PPOE,至少有十万美元花在这个问题上.主要观点:

    很多时候,HTTP连接会消失,然后返回"200 OK"消息.只有它不是你的网站; 它是酒店/咖啡馆/提供连接你的路由器.

    API将以有趣和创造性的方式存在.例如,如果您曾经拥有调制解调器,但某些Windows网络API会返回错误的连接数据,但随后升级到DSL,但未运行向导.

    在一些(非常重要的)地方,尝试连接将启动连接 - 拨号 - 每分钟充电.再次,在PPOE上他们发布了一个相当受欢迎的软件,它在凌晨3点完成了这项工作.为一些严重脾气暴躁的客户而制造.

    一些主要的互联网服务提供商在宽带上运行时拥有"独特"的软件,他们不够聪明,只能使用他们提供的漂亮的以太网和TCP/IP.相反,他们使用以太网来模拟调制解调器(后者又设置为模拟以太网+ tcp/ip设置).它被称为PPPOE,它很难分辨你尝试使用的适配器

    越来越多的家庭正在使用DSL和Cabel调制解调器,其中计算机是"连接"的,但仅限于本地盒子; 本地方框可能已失去连接,你永远不会知道.

唯一的解决方案是尝试连接并验证返回.



2> Leon Tayson..:

检查WebRequest.GetResponse方法

// Create a new WebRequest Object to the mentioned URL.
WebRequest myWebRequest=WebRequest.Create("http://www.contoso.com");
Console.WriteLine("\nThe Timeout time of the request before setting is : {0} milliseconds",myWebRequest.Timeout);

// Set the 'Timeout' property in Milliseconds.
myWebRequest.Timeout=10000;

// This request will throw a WebException if it reaches the timeout limit before it is able to fetch the resource.
WebResponse myWebResponse=myWebRequest.GetResponse();

或者您可以调用InternetGetConnectedState API

[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue ) ;

public static bool IsConnectedToInternet()
{
    int Desc ;
    return InternetGetConnectedState(out Desc, 0);
}

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有