【问题标题】:I want to know the IP adress of machine in network. Why do I get 127.0.0.1?我想知道网络中机器的IP地址。为什么我得到 127.0.0.1?
【发布时间】:2013-06-26 12:30:53
【问题描述】:

为什么我将 IP 地址设置为 127.0.0.1

这是我用于获取 IP 地址的示例程序

package com;

import java.net.InetAddress;    
import org.apache.log4j.Logger;

public class Test {
    private static final Logger logger = Logger.getLogger(Test.class);

    public static void main(String args[]) throws Exception {
        String ips = InetAddress.getLocalHost().getHostAddress().trim();
        System.out.println(ips);
    }

}

【问题讨论】:

  • 因为 127.0.0.1 是 localhost?
  • 参见this question,它使用接口枚举来查找不是环回接口的接口。
  • IP 地址 127.0.0.1 是为每台计算机保留的专用地址。 127.0.0.1 通常是计算机的环回地址。网络软件和实用程序可以使用 127.0.0.1 访问本地计算机的 TCP/IP 网络资源。发送到环回 IP 地址(如 127.0.0.1)的消息不会到达局域网 (LAN) 之外,而是由计算机自己的网络适配器自动重新路由回 TCP/IP 堆栈的接收端。更多,see.

标签: java


【解决方案1】:

这是来自本地服务器的 IP 地址 (= localhost)。当您访问正在运行程序的计算机时使用它..

【讨论】:

  • 感谢您的回答,我的问题是为什么我没有获得 IP ??
  • @Preethi 请编辑问题。它读到了为什么我得到 IP 地址
【解决方案2】:
Enumeration e=NetworkInterface.getNetworkInterfaces();

while(e.hasMoreElements())
{
    NetworkInterface n=(NetworkInterface) e.nextElement();
    Enumeration ee = n.getInetAddresses();
    while(ee.hasMoreElements())
    {
        InetAddress i= (InetAddress) ee.nextElement();
        System.out.println(i.getHostAddress());
    }
}

您可以使用上面的代码来获取您机器的IP地址。

Source

【讨论】:

    【解决方案3】:

    您的本地主机是127.0.0.1。见InetAddress#getLocalHost()

    返回本地主机的地址。这是通过从系统中检索主机的名称,然后将该名称解析为 InetAddress 来实现的。

    简单地说,本地主机是分配给环回网络接口的地址的标准主机名。转换为 IP 地址,localhost 始终指定为 127.0.0.1。

    根据Wikipedia

    在计算机网络中,localhost 表示这台计算机。它是计算机软件和用户可以用来通过其环回网络接口访问计算机自己的网络服务的主机名。在大多数计算机系统上,localhost 解析为地址 127.0.0.1(这是最常用的 IPv4 环回地址)和 IPv6 环回地址 ::1。

    【讨论】:

    • 请注意,虽然“主机名localhost”解析为 127.0.0.1,但本地主机的主机名可能会解析为另一个地址。它们是两种不同的东西。
    【解决方案4】:

    您在系统上获得 127.0.0.1,因为这是 机器名称 解析的内容。 在其他系统上,您可能会获得不同的地址。

    例如,我得到127.0.1.1,因为我的机器被称为koivu,而我的/etc/hosts 中有这一行:

    127.0.1.1   koivu
    

    如果我有其他 IP 地址,我会得到那个地址。

    【讨论】:

      【解决方案5】:

      例如,这是返回我的 LAN IP 地址:System.out.println(InetAddress.getLocalHost().getHostAddress());

      您可能有多个 IP 地址,这给您带来了麻烦。

      【讨论】:

        【解决方案6】:

        这个给ip而不是localhost地址

        import java.net.*;
        import java.io.*;
        
        public class GetIPAddress {
        
            public static void main(String[] args) {
                try {
                    InetAddress thisIp = InetAddress.getLocalHost();
                    System.out.println("IP:" + thisIp.getHostAddress());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        

        【讨论】:

          【解决方案7】:

          因为您正在从您的localhost 访问您的应用程序

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-19
            • 2011-11-12
            • 2018-04-03
            • 2017-12-06
            • 2016-01-21
            • 2023-03-14
            • 1970-01-01
            相关资源
            最近更新 更多