【问题标题】:How to know the various IP addresses of the server using C, Linux, Socket?使用C、Linux、Socket如何知道服务器的各种IP地址?
【发布时间】:2016-06-16 05:04:19
【问题描述】:

我知道远程节点的一个 IP 地址是通过。跟踪路由。但是,我想知道其接口中的所有 IP 地址。我该怎么做?该节点没有主机名,因此我无法使用 API 使用主机名 API 获取各种 ifaddress。我搜索了各个地方,但找不到有关如何获取远程节点的各种 IP 地址的信息。有可能得到它吗?基本上,我正在实现 traceroute,我的目的是显示中间节点的环回地址,而不是实际的接口地址。如果环回地址不可用,我想显示实际的接口地址。我在这里挣扎,对此一无所知。这都是使用 C - linux, UDP socket 实现的。

【问题讨论】:

  • 您想知道为什么吗?您可能只能使用任何特定子网中的其中一个。 “这都是使用 C - Linux, UDP socket 实现的”是不真实的,否则你不会问这个问题。什么都没有执行。如果你真的需要这个,你将不得不设计你自己的协议和你自己的远程代理,并将其安装在感兴趣的目标上。

标签: c linux sockets ip-address


【解决方案1】:

我想知道其接口中的所有 IP 地址。我该怎么做

查找 DNS 或登录并使用依赖于操作系统的工具/API 查找本地接口的 IP 地址,否则您会迷路。

【讨论】:

    【解决方案2】:

    从技术上讲,如果您在同一个网络上,您可以使用 macid 并嗅探网络流量,以在该接口上查找其他 IP,但是一旦您离开本地网络,几乎不可能找到该机器正在侦听的其他 IP到,如果他们提供此信息,这将是一个安全问题。

    【讨论】:

      【解决方案3】:

      traceroute 的工作方式是通过向远程地址发送 IP TTL 值增加的数据包,沿途的路由器将返回 ICMP TTL 超时时间,从而将它们的 IP 源地址显示给发送者,这样您就可以了解尝试与特定远程地址通信时,您的数据可能经过的跳数。 icmp 错误消息将包含跃点的传入接口的 ip 地址,在您的情况下,您还想发现分配给进一步传出接口的所有其他 ip 地址(从您的发件人角度来看,这是传出的),但使用上述方法是不可能的提到的技术或任何其他。

      【讨论】:

        猜你喜欢
        • 2013-11-27
        • 2016-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-15
        • 2012-09-19
        • 2012-05-27
        相关资源
        最近更新 更多