【问题标题】:How to check single IP address to know if it is IP camera address如何检查单个 IP 地址以知道它是否是 IP 摄像机地址
【发布时间】:2014-01-09 05:27:35
【问题描述】:

编辑:当我有 IP 地址时,我知道如何访问相机。问题是如何检查本地网络中指定的IP地址是否属于IP摄像机。


我在一个带有一台路由器的小型本地网络中工作。该网络中可用地址的范围是: 从192.168.0.0192.168.0.255

有一个 IP 摄像机连接到该网络。那个摄像头的地址是:192.168.0.12

我使用arp -a 命令在命令行中查询路由器的ARP 表。此处显示(绿色)。

我通过 AXIS IP 实用程序 发现了该地址,但我希望能够以编程方式这样做。

相机型号为:Axis m1011w

EDIT2:感谢 OnoSendai,我从路由器的 ARP 表中获得了可能的 IP 地址池:

如何查询每个列出的 IP 地址(例如 192.168.0.12)以确保它是 IP 摄像机?

【问题讨论】:

  • 您的相机是否有某种可以接受的“握手”协议?
  • @SimonWhitehead 那是我不知道的东西。我不知道如何向 IP 地址发送什么消息以及期望什么答案。相机是安讯士 m1011w。我查看了 AXIS SDK:developer.axis.com/wiki/doku.php?id=axis:sdk,但没有找到任何有用的功能。我觉得爱丽丝在兔子洞里……迷路了。
  • 这种类型的摄像头暴露网页或其他协议以供外部应用程序检测和访问其服务是很常见的。我建议使用 telnet 来确定哪些公共端口是打开的,以及它们接受哪些类型的消息。这将提供有关您的应用程序需要模仿什么才能检测 IP 上的适当设备的详细信息(更多信息有助于减少误报)。
  • @SimonWhitehead 我希望某种 UDP 监听正在进行。依次 Ping 每个地址不会很好地扩展。

标签: c# .net networking ip-camera


【解决方案1】:

我相信这个模型在端口 554 上提供了一个 HTTP RTSP 服务。你可以尝试打开一个到它的 TCP 连接 - 如果设备接受传入的连接,那么它可能是相机。

如果您有正确的用户名/密码凭据对来访问它,那么您可以使用此 URL 访问 RTSP 服务:

rtsp://[username]:[password]@[ip.address]:554/axis-media/media.amp

这是他们规范的链接:

http://www.axis.com/en/products/cam_m1011w/index.htm

这里是访问说明:

http://www.wowza.com/forums/content.php?39

为了列出你本地网络上的所有 IP 地址,你可以使用这个 sn -p 读取 ARP 命令转储的信息:

    static List<string> GetARP()
    {
        List<string> _ret = new List<string>();

        Process netUtility = new Process();
        netUtility.StartInfo.FileName = "arp.exe";
        netUtility.StartInfo.CreateNoWindow = true;
        netUtility.StartInfo.Arguments = "-a";
        netUtility.StartInfo.RedirectStandardOutput = true;
        netUtility.StartInfo.UseShellExecute = false;
        netUtility.StartInfo.RedirectStandardError = true;
        netUtility.Start();

        StreamReader streamReader = new StreamReader(netUtility.StandardOutput.BaseStream, netUtility.StandardOutput.CurrentEncoding);

        string line = "";
        while ((line = streamReader.ReadLine()) != null)
        {

            if (line.StartsWith("  "))
            {
                var Itms = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (Itms.Length == 3)
                    _ret.Add(Itms[0]);
            }
        }

        streamReader.Close();

        return _ret;

    }

该函数将返回一个包含所有本地 IP 地址的List&lt;string&gt;(如路由器的 ARP 表中所示)。

【讨论】:

  • 当我拥有相机的 IP 地址时,我确实知道如何访问相机。问题是以编程方式检测 IP 地址。
  • @Yoda Code sn-p 添加。
  • 谢谢,我会尽快检查,早上 6 点 51 分我的大脑有点慢,没有睡觉。感谢您的宝贵时间。
  • 没问题,慢慢来 - 希望它对你有用。
  • 您可以尝试循环浏览 GetARP() 以编程方式返回的所有条目。这是一篇关于如何使用 WebClient 和 WebRequest 类的好帖子:stackoverflow.com/questions/4736831/…
猜你喜欢
  • 2012-05-27
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2012-11-28
  • 2022-03-03
  • 1970-01-01
  • 2011-02-05
相关资源
最近更新 更多