首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

InetAddress: getHostAddress()返回127.x.x.x而不是外部IP地址

InetAddress类是Java中用于表示IP地址和主机名的类。getHostAddress()是InetAddress类的一个方法,用于返回主机的IP地址。根据给出的问答内容,getHostAddress()返回了一个以"127"开头的IP地址,而不是真实的外部IP地址。

127.x.x.x是一个回环地址,也称为本地环回地址,用于在本机内部进行网络通信。它指向本地主机,通过它发送的数据包将在本地回环并返回本地主机。因此,返回"127.x.x.x"表示获取的是本地主机的内部地址,而不是外部的公网IP地址。

要获取外部IP地址,可以使用其他的方法或工具。常见的方法是通过访问特定的外部服务来获取公网IP地址。这样的服务通常会返回请求方的公网IP地址信息。一个常用的服务是"ipify.org",可以通过向该服务发送HTTP请求来获取公网IP地址。

以下是一个示例代码,用于使用Java获取外部IP地址:

代码语言:txt
复制
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class ExternalIPExample {
    public static void main(String[] args) {
        try {
            URL url = new URL("https://api.ipify.org");
            BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
            String externalIP = reader.readLine();
            reader.close();

            System.out.println("External IP Address: " + externalIP);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上述示例代码使用Java的URL类来发送HTTP请求,然后读取返回的数据。该代码访问"ipify.org"服务并读取返回的公网IP地址。

关于腾讯云相关产品和产品介绍的链接地址,可以根据具体的需求和场景进行选择。腾讯云提供了丰富的云计算服务,如云服务器、云数据库、人工智能等。您可以访问腾讯云官方网站,查看详细的产品信息和文档。

请注意,为了给出完善且全面的答案,需要在问答内容中提供更具体的问题或要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 url 通常使用域名不是 IP 地址

今天来谈谈为什么我们的网址,通常是使用域名,不是 IP 地址。 首先我们了解一下 DNS 是什么。 DNS DNS,全称为 Domain Name System,即域名系统。...其实就是:域名 --> IP --> 真实服务器。 为什么要用域名不用 IP? 首先,域名方便记忆。 IP 没有意义,比如 39.156.66.10 就像是一个手机号,难以记忆。...然后,通过域名的这一层抽象,我们可以随意地更换其下的 IP 地址。 如果我们的网站用的是一个固定 IP,当我们想更换服务器,同时也代表 IP 会被替换,那我们就需要一个个通知用户,这是不能接受的。...负载均衡就是让 DNS 给不同的用户提供不同的 IP 地址,让他们访问不同的服务器,通过集群的方式,减轻单个服务器的压力。...结尾 通过 DNS 系统,我们可以用域名获得对应 IP 地址,这样更容易记忆,也对 IP 代表的具体服务器做了一层抽象,能更好地去替换服务器或实现集群。 我是前端西瓜哥,关注我,学习更多前端知识。

1.7K20

Java基础-26(01)总结网络编程

计算机只能识别二进制的数据,所以我们的IP地址应该是一个二进制的数据。 但是呢,我们配置的IP地址不是二进制的,为什么呢?...所以,为了方便表示IP地址,我们就把IP地址的每一个字节上的数据换算成十进制,然后用.分开来表示: "点分十进制" b:IP地址的组成 网络号段+主机号段 A类:第一号段为网络号段+后三段的主机号段...地址的分类 A类 1.0.0.1---127.255.255.254 (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,被用在局域网络中的地址) (2)127.X.X.X是保留地址...d:特殊的IP地址: 127.0.0.1 回环地址(表示本机) x.x.x.255 广播地址 x.x.x.0 网络地址 e:dos命令 ipconfig 查看本机ip地址 ping...// public InetAddress getAddress() InetAddress address = dp.getAddress(); String ip = address.getHostAddress

75080

第七阶段-网络编程:【第一章 网络编程】

(二) 网络编程三要素 (1) IP地址 A:IP地址概述:IP地址是网络中计算机的唯一标识** 我们应该或多或少都有见过IP地址的格式 xxx.xxx.xxx.xxx大致应该是类似这样的,但是计算机不是只能识别二进制的数据...,但是很显然,我们的IP地址确实不是二进制的,这是什么原因呢?...地址的分类 A类 1.0.0.1---127.255.255.254 (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,被用在局域网络中的地址)...(2)127.X.X.X是保留地址,用做循环测试用的 B类 128.0.0.1---191.255.255.254 172.16.0.0---172.31.255.255是私有地址 169.254...(表示本机)//也就是说,ping本机的IP地址相当于ping 127.0.0.1 x.x.x.255 广播地址 x.x.x.0 网络地址 InetAddress的成员方法 //根据主机名或者IP地址的字符串表示得到

33030

Java中InetAddress的使用(一):域名解析【享学Java】

你要进行网络编程就得有IP地址、域名、主机等要素,一个InetAddress里就保存着IP地址,同时还可能包含主机名,并且它提供了主机名 - IP地址互转的方法(比简单的域名解析还牛有木有),本来主要就介绍它看看能够怎么玩...addr):在给定原始 IP 地址的情况下,返回 InetAddress 对象。...地址:" + inet.getHostAddress()); // IP地址:61.135.169.125 } 以上两种方式:通过IP构造一个InetAddress对象,因此你获取它的IP地址时将不再经过...另外,此方法在Linux下使用几乎永远返回127.0.0.1,因为在Linux下它仅仅是去读取了hosts文件的内容,Linux下的hosts文件一般内容如下: # 这里你若配置为127.0.0.2,...其实不是的。

7.3K42

Android开发之InetAddress基础入门简介与源码实例

"); //取得远程InetAddress对象 System.out.println("本机IP地址:" + locAdd.getHostAddress()); //得到本地IP地址...System.out.println("百度IP地址:" + remAdd.getHostAddress()); //得到百度IP地址 System.out.println("本机是否可达:...对于DNS来说,本地需要向DNS服务器发送查询的请求,然后服务器根据一系列的操作,返回对应的IP地址,为了提高效率,通常本地会缓存一些主机名与IP地址的映射,这样访问相同的地址,就不需要重复发送DNS请求了...如果IP地址不存在或DNS服务器不允许进行IP地址和域名映射,就返回这个IP地址。...使用IP地址 创建InetAddress对象 此时getCanonicalHostName方法和getHostName方法完全相同,返回的都是主机名,不是主机别名。

1.6K21

网络编程概述

1、计算机网络 ​ 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。...有人说,20世纪最伟大的发明不是计算机,而是计算机网络。 还有人说,如果你买了计算机没有联网,就等于买了电话机没有接电话线一样。...4、网络编程三要素 IP地址:InetAddress 网络中设备的标识,不易记忆,可用主机名 端口号 用于标识进程的逻辑地址,不同进程的标识 传输协议 通讯的规则 常见协议:TCP,UDP IP地址:InetAddress...public static InetAddress getByName(String host):根据主机名或者IP地址的字符串表示得到IP地址对象 class InetAddressDemo {...(); // public String getHostAddress() String ip = address.getHostAddress(); System.out.println(

24710

大数据必学Java基础(八十):网络编程的深入了解

​网络编程的深入了解一、引入1、网络编程把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源...2、通信两个重要的要素:IP+PORT域名:www.baidu.com --> DNS服务器解析 --> IP地址 www.sina.com www.bbbb.com3...ia2 = InetAddress.getByName("localhost");//localhost指代的是本机的ip地址 System.out.println(ia2);...InetAddress ia3 = InetAddress.getByName("127.0.0.1");//127.0.0.1指代的是本机的ip地址 System.out.println...());//获取ip地址 }}2、InetSocketAddress来封装了IP和端口号public class Test02 { //这是一个main方法,是程序的入口: public

26581

170709-Java实现获取本机Ip工具类

180709-Java实现获取本机Ip的工具类 获取本机Ip算是比较常见的一个需求场景了,比如业务报警,可能就会带上出问题的机器IP,方便直接上去看日志定位问题,那么问题来了,如何获取机器IP呢?...在某些情况下,可能返回的是 127.0.0.1 在虚拟机中执行时,就可能遇到这个问题,截图如下 2....进阶版 做一点简单的改动,获取IpV4的地址,源码如下 /** * 直接根据第一个网卡地址作为其内网ipv4地址,避免返回 127.0.0.1 * * @return */ public static...(); } } } return InetAddress.getLocalHost().getHostAddress...= "127.0.0.1"; /** * 直接根据第一个网卡地址作为其内网ipv4地址,避免返回 127.0.0.1 * * @return */

1.1K10

android获取Mac地址IP地址

最近项目突然加了个需求,上传用户的ip和mac,话不多说,直接上代码 获取Mac地址实际项目中测试了如下几种方法: (1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到...inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress...inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress...获取到了类似fe80::b607:f9ff:fee5:487e..这样的IP地址。经过一番努力,终于找出原因。 上面的IP地址是IPV6的地址形式(大概这个意思,具体没有太深入研究)。...解决方法是,在上面代码中的最内层的for循环的if语句中对inetAddress进行格式判断,只有其是IPV4格式地址时,才返回值。

8.9K20

第62节:探索Java中的网络编程技术

{ //获取本地主机地址对象 InetAddress ip = InetAddress.getLocalHost(); System.out.println(ip.getHostAddress...equals(Object obj) 将此对象与指定对象进行比较 byte[] getAddress() 返回InetAddress对象的原始ip地址. static InetAddress[] getAllByName...(String host) 给定主机的名称,根据系统上配置的名称服务返回ip地址数组. static InetAddress getByAddress(byte[] addr) 给出原始IP地址InetAddress...getByName(String host) 确定主机名称的ip地址 String getCanonicalHostName() 获取此ip地址的完全限定域名 String getHostAddress...() 返回文本显示中的ip地址字符串 String getHostName() 获取此ip地址的主机名 网络编程: 1,网络模型:7层--->4层 端口 用于标识进程的逻辑地址,不同进程的标识

36730
领券