我有一个通过以太网端口进行通信的设备(高速摄像机)。当我将其连接到计算机(Scientific Linux 6.4 x64)时,我看到计算机端口和摄像机上的指示灯都在闪烁,这表明至少在最初阶段正在进行某种数据传输。
问题是,任何设计用于该设备的工具都无法看到该设备。因此,我希望在较低级别与该设备进行交互,部分是为了调试,部分是为了教育,部分是为了进行健全性检查。
我对网络还很陌生,因此可能对一些基本概念感到困惑,但我想知道是否有某种方法可以发送广播或数据包或其他方法直接调查/与相机通信?
我尝试使用 nmap(ping IP 范围),但没有任何结果(我不知道直接连接到以太网的摄像头是否必须有 IP)。我还尝试使用 arp-scan,由于类似原因(eth0 没有 IP),也失败了。
编辑-更多信息:
相机品牌:AOS
相机型号:X-PRI
软件:AOS CaPIICam SDK(顺便说一句,它旨在在 Windows 上运行,我尝试在本机 Windows 环境和 Wine 中运行它,结果相同。)
我不确定我使用的是哪种类型的电缆。两端的线型相同(橙色-蓝色-绿色-棕色),所以我猜它不是交叉的。我直接从相机 -> 电缆 -> 计算机进行连接。
至于源代码,如下:
int main() {
CCaPIICam MyCam;
CAM_RC rc;
int ndev;
char* sNames[50];
for (int i = 0; i < 50; i++)
sNames[i] = new char[40];
rc = MyCam.GetCamNames(ndev, sNames);
camerror(rc);
getchar();
return EXIT_SUCCESS;
}
其中 camerror(int) 只是一个 switch-case 打印到控制台例程,用于根据 API 文档报告错误代码。它在本机 Windows 和 VM 下编译和链接良好,但 camerror() 在 GetCamNames() 上报告“无效节点”,而文档中未对此进行定义。
答案1
ping
Linux 上确实有一个广播选项,您可以尝试一下。
在摄像机的某个地方查找 MAC 地址,如果是以太网,则 MAC 地址应该位于设备上的某个位置,或者可能位于设备的设置菜单中(如果有)。然后,您可以arping
查看它是否获取了 IP 地址或告诉您它认为的 IP 地址。如果您可以进入路由器或 DHCP 服务器的 DHCP 表,您可以在那里检查是否有任何主机名表明摄像机获取了 IP 地址。
否则,如果您认为传输正在进行,则需要启动数据包分析器并监视它所连接的接口。 tcpdump
可能会有所帮助,并且 Wireshark 或其命令行等效项tshark
可能会有用。
答案2
您网络上的 DHCP 服务器应该有关于摄像机的信息;制造商对 IP 配置参数进行硬编码是相当短视的。
要查看相机是否发出DHCP
请求,请tcpdump -nvv udp port 67
在 Linux 机器上使用。在 Mac OS X 上,当我打开 WiFi 时,我得到了以下输出:
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 68:a8:6d:58:5b:f3, length 300, xid 0xd5752fa1, secs 2, Flags [none] (0x0000)
Client-Ethernet-Address 68:a8:6d:58:5b:f3
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
Parameter-Request Option 55, length 9:
Subnet-Mask, Default-Gateway, Domain-Name-Server, Domain-Name
Option 119, LDAP, Option 252, Netbios-Name-Server
Netbios-Node
MSZ Option 57, length 2: 1500
Client-ID Option 61, length 7: ether 68:a8:6d:58:5b:f3
Lease-Time Option 51, length 4: 7776000
Hostname Option 12, length 10: "mini-nevie"
希望这可以帮助....