获取网络中设备的IP地址

时间:2012-10-10 06:58:26

标签: c linux

从主题本身如何通过其IP地址检测设备。当我检测到它时,设备将向服务器发送它现在已连接的响应,就像检测到新设备但设备未连接到linux机器一样。我在这里有一张照片..

enter image description here

当设备现在连接后,我可以通过它的IP地址向它发送数据,这样我就可以控制它..设备将由电机组成,LED将向其发送命令。像......一样的命令向上移动,向下移动,向左移动,向左移动,向右移动用于LED灯。

我怎么能用c?

4 个答案:

答案 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

在这些中,cliaddrsrc_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)

我发现这是一个有用的教程:

linuxhowtos.org/C_C++/socket.htm

它实际上涵盖了您开始使用套接字编程时可能想知道的所有内容,而且编写得很好。

答案 3 :(得分:0)

有很多方法可以获取有关远程设备的数据。

  1. SOCKET
  2. SNMP协议
  3. nmap tool
  4. 套接字编程是连接到远程系统并获取有关它的数据的通用方法。

    对于协议SNMP,请使用以下库在编程中使用它。

      

    http://www.net-snmp.org/

    对于nmap工具,您可以使用以下链接

      

    http://nmap.org/

    希望这有帮助。