从主题本身如何通过其IP地址检测设备。当我检测到它时,设备将向服务器发送它现在已连接的响应,就像检测到新设备但设备未连接到linux机器一样。我在这里有一张照片..
当设备现在连接后,我可以通过它的IP地址向它发送数据,这样我就可以控制它..设备将由电机组成,LED将向其发送命令。像......一样的命令向上移动,向下移动,向左移动,向左移动,向右移动用于LED灯。
我怎么能用c?
答案 0 :(得分:0)
当您的设备回电时,您将获得一个IP地址。我假设您的检测机制类似于UDP上的广播。如果您使用的是Berkeley套接字,则可以使用以下两种功能之一:
int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen); // TCP method of receiving connection
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); // UDP method of receiving data
在这些中,cliaddr
和src_addr
分别会为您提供发送数据包的计算机的IP。例如,在linux上,IPv4的sockaddr结构是:
/* Internet address. */
struct in_addr {
__be32 s_addr;
};
struct sockaddr_in {
__kernel_sa_family_t sin_family; /* Address family */
__be16 sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
/* Pad to size of `struct sockaddr'. */
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
sizeof(unsigned short int) - sizeof(struct in_addr)];
};
答案 1 :(得分:0)
如果您知道设备的主机名,则可以使用gethostbyname,它会返回包含所需数据的 hostent 结构,您正在寻找(IP地址) 。
从那里你可以继续建立TCP连接或发送UDP包等......
欢呼声
答案 2 :(得分:0)
答案 3 :(得分:0)
有很多方法可以获取有关远程设备的数据。
套接字编程是连接到远程系统并获取有关它的数据的通用方法。
对于协议SNMP,请使用以下库在编程中使用它。
对于nmap工具,您可以使用以下链接
希望这有帮助。