如何在C#中检查互联网连接是否可用

4
我为一家公司开发了一款软件。出于某种许可证目的,我使用远程数据库来允许/禁止软件的使用。每次用户登录软件时都会执行此任务。如果没有互联网连接或查询远程数据库失败,则用户会收到错误提示,无法登录软件并显示远程数据库的http地址(如果他仔细阅读错误提示,我不希望他看到)。
我想知道是否有任何方法可以执行相同的过程,但如果远程数据库查询失败或互联网连接不可用,它应该暂时跳过检查,并在下次登录尝试时执行相同的过程。这样我的客户就不会知道这个许可证问题。
如何在创建远程数据库查询之前检查互联网连接性(使用的是局域网、WiFi、拨号上网或其他)。
建议的方法:
  1. ping我的远程数据库服务器IP。
  2. Michel的这个问题
关于从Michel的问题中获得的结果,我发现没有稳定的解决方案。

可能是如何检查网络连接?的重复问题。 - T.Todua
4个回答

7
为什么不尝试在数据库上执行一个非常便宜的查询呢?确实,您可以为此目的创建一个存储过程——甚至可能会返回一些版本信息等等。
毕竟,重要的不是ping是否有效,或者客户端是否可以访问其他机器:重要的是您是否能与数据库通信。所以要测试这一点。
至于向用户呈现什么错误消息——这肯定在您的控制范围内,因此请确保提供适当的信息。

1

1

我不确定在C#中尝试打开与服务器的连接并捕获异常而没有可见反馈是否有效,但您确定要使用此方法来处理许可证吗?我认为它不仅非常容易被发现(例如个人防火墙将标记该连接),而且也很容易被击败。

另外,如果用户的计算机没有连接到互联网会发生什么?虽然不太可能,但这种情况确实可能发生,而且用户无意识地就能破解您的许可方案。


@r_ 你能给我推荐一种易于使用的方法和步骤吗?请确保我不想使用任何第三方软件来完成指定的目的。如果你能提供一些示例,我将非常感激。 - Assad Nazar
@boota:这不是我的专业领域,所以我不能确定什么是好的解决方案,但乍一看,似乎你有两个选择:要么以某种方式使数据库连接必需(并将此要求明确告知用户),要么转向非网络许可证检查。快速的Google/SO搜索会提供一些建议。 - kfb

0

1
你能详细阐述一下链接内容及其与问题的相关性吗?目前,这篇回复看起来像是针对一个已有被接受答案的老问题的垃圾信息。 - forsvarir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接