不断检查互联网连接

The*_*ask 5 .net c# internet-connection

如何在我的应用程序中不断检查互联网连接,如果连接不可用则进行响应?

目前我正在使用:

while(true) {
 if(HasConnection()) {
     //doSomething..
  }
   //stop app by 1sec
}
Run Code Online (Sandbox Code Playgroud)

但它似乎相当不优雅.

sar*_*old 0

您如何知道您是否有互联网连接?您可以将数据包路由到附近的路由器就足够了吗?也许机器只有一个网卡、一个网关,也许网关的连接断开了,但机器仍然可以路由到网关和本地网络?

也许机器有一个网卡和十几个网关;也许它们一直来来去去,但其中之一总是在上面?

如果机器有多个 NIC,但只有一个网关怎么办?也许它可以路由到互联网的某个子集,但仍然与未连接到互联网的本地网络具有良好的连接?

如果计算机有多个 NIC、多个网关,但由于管理策略原因,仍然只有部分 Internet 是可路由的,该怎么办?

您真的只关心客户端是否能够连接到您的服务器吗?

数据包之间什么样的延迟是可以接受的?(30ms 很好,300ms 挑战了人类的耐力极限,3000ms 是无法忍受的长时间,960000ms 是连接太阳能探测器所需的时间。)什么样的丢包是可以接受的?

真正想要衡量的是什么?