【问题标题】:Monitor continuosly if device is connected over IP持续监控设备是否通过 IP 连接
【发布时间】:2012-12-12 13:37:39
【问题描述】:

我有一个通过 LAN 连接到计算机的电子设备。我有它的 SDK 可以与之通信。

在与设备通信之前,必须使用 SDK 中提供的代码连接和注册设备。没关系。

我的win应用程序启动时连接并注册机器,但问题是如果电子设备关闭然后再打开,应用程序必须重新连接并注册设备。

所以问题是如何持续监控设备是否通过 IP 连接(例如通过 C# 代码 PINGING)。

所以在不断 PING 设备时的一个问题是我必须在单独的线程上运行它,这样它才不会影响我的实际应用程序。另一个好的解决方案是,如果我得到一些片段代码,当设备通过 IP 断开连接时会触发事件。

感谢您的帮助。 问候,

编辑 1:我使用 SDK 连接的一些代码

bool connected;
connected = axCZKEM1.Connect_Net("192.168.1.201", "4370");

bool registered;
registered = axCZKEM1.RegEvent(1, 65535); 

编辑 2:我正在尝试 sa_ddam213 的回答方法,但我从未遇到 ping 失败。此外,它使我的电脑运行缓慢。我犯了什么错误?

while (true)
{
        Ping ping = new Ping();
        ping.PingCompleted += (sender, e) =>
        {
              if(e.Reply.Status != IPStatus.Success)
              {
                   connected=false;
                   registered=false;

                   while(connected && registered)
                   {
                       connected = axCZKEM1.Connect_Net("192.168.1.201", 4370);
                       registered = axCZKEM1.RegEvent(1, 65535);
                    }
               }
          };

          ping.Send("192.168.1.201", 3000);
}

【问题讨论】:

  • 如果 SDK 要求您在设备离线和在线时“重新连接并重新注册”,那么它可能会使您的应用程序处于不良状态。您的应用程序代码能否检测到它处于错误状态,然后返回尝试重新连接?
  • 另外,如果您能详细说明一下该设备以及它侦听的端口,那将会有所帮助。你能从命令行“ping”它的IP地址吗?它有嵌入式网络服务器吗?
  • 这是一个指纹考勤机,当用户将手指放在上面时,我用它来记录考勤。是的,我们可以从命令行 Ping 它。它没有嵌入任何网络服务器。
  • 这将运行缓慢,因为您在 while 循环中有一个异步调用,这将发送大量 Ping 请求
  • @sa_ddam213 我将其更改为同步调用,但在设备断开连接时它仍然不会进入 if 循环!

标签: c# winforms sockets ip


【解决方案1】:

你可以Ping使用c#,

 PingReply reply = new Ping().Send("127.0.0.1");
 if (reply.Status == IPStatus.Success)
 {
    // yay
 }

异步方法:

Ping ping = new Ping();
ping.PingCompleted += (sender, e) => 
{
    if (e.Reply.Status == IPStatus.Success)
    {
        // yay
    }
};
ping.SendAsync("127.0.0.1", 3000, null);

【讨论】:

  • 感谢解答,请参考edit2,我无法PING失败!
猜你喜欢
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 2018-11-27
相关资源
最近更新 更多