【发布时间】:2017-04-10 09:39:02
【问题描述】:
我一直在寻找解决方案来测试或检查我的设备与包含我的数据库的服务器之间的连接。 注意:我想在我的 PCL 项目中实施该解决方案。
【问题讨论】:
我一直在寻找解决方案来测试或检查我的设备与包含我的数据库的服务器之间的连接。 注意:我想在我的 PCL 项目中实施该解决方案。
【问题讨论】:
您可以为此使用 James Montemagno 的 Connectivity Plugin。
您可以通过调用来检查您正在使用的设备是否已连接;
bool isConnected = CrossConnectivity.Current.IsConnected;
或者,您可以“ping”服务器以查看是否可以访问它。你可以这样做:
var isReachable = await CrossConnectivity.Current.IsReachable("google.com", 5000);
您还可以提供 IP 地址。第二个参数是超时,默认为 5 秒。还有特定的IsRemoteReachable 方法也可以让你指定端口号。
这个库可以在 PCL 中使用。
注意;对于 Android,您需要 ACCESS_NETWORK_STATE 和 ACCESS_WIFI_STATE 权限,安装 NuGet 包时会自动添加。
【讨论】:
在大多数情况下,它是通过 ICMP ping 完成的。根据您的应用程序,您可以每 1-5 秒 ping 一次服务器。但出于性能和安全原因,我建议使用多播地址并从服务器 ping 该地址(最后一个也需要在服务器端配置防火墙)。如果某些回复(至少 3 个)没有到达目标主机,您可以确定连接丢失。
【讨论】: