【发布时间】:2018-06-12 08:48:42
【问题描述】:
我有一个远程设备(在我的情况下是生物识别)放置在位置 X。在位置 Y 时,我能够连接到该设备。但是,每次连接失败或白天无法连接时,我都需要知道原因。为此,我尝试在每次连接设备或未建立连接时对设备执行 ping 操作,因此我会知道断开连接的原因。下面的 sn-p 返回 false,即即使设备能够连接成功,也无法 ping 通。我尝试增加timeout,但它仍然显示超时,最终无法ping通。
控制器:
bool isPinged = false;
isConnected = objZkeeper2.Connect_Net(IpAddr, Port);
if (isConnected)
{
//considering the connection is established, I am sending a ping req
isPinged = PingTheDevice(IpAddr);
然后:
public static bool PingTheDevice(string ipAdd)
{
try
{
IPAddress ipAddress = IPAddress.Parse(ipAdd);
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
byte[] buffer = new byte[32];
int timeout = 5000;
PingReply reply = pingSender.Send(ipAddress, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
return true;
else
{
return false;
}
}
catch (Exception)
{
return false;
}
}
【问题讨论】:
-
您确定设备已配置为响应 ping 吗?尽管理论上 IP 网络上的所有设备都应该响应,但有时它们不会响应,或者该功能可能会被禁用。无论如何,ping 报告将如何帮助您准确地确定断开连接的原因?
-
@ADyson 可以说由于某种原因,设备无法远程连接,我需要检查它是否被 ping 通。如果它正在被 ping 但未连接,这意味着问题(连接和数据获取)可能在我这边,不是吗?
-
您确定没有可能丢弃 ICMP 数据包的设备(防火墙、路由器等)吗?
-
@MickJagz 这可能意味着,或者可能意味着设备的软件已经崩溃并且没有正确响应请求。 ping 可以真正告诉您的是设备已连接到网络。这是一个基本的网络测试。它不会告诉您任何有关其功能状态的信息。
标签: c# .net asp.net-mvc ping biometrics