当前位置: 首页 > news >正文

JAVA如何获取服务器ip

一、最简单的方法就是使用InetAddress获取本机ip

InetAddress.getLocalHost().getHostAddress();
public static void main(String[] args) {try {//用 getLocalHost() 方法创建的InetAddress的对象InetAddress address = InetAddress.getLocalHost();System.out.println(address.getHostName());//主机名System.out.println(address.getCanonicalHostName());//主机别名System.out.println(address.getHostAddress());//获取IP地址System.out.println("===============");//用域名创建 InetAddress对象InetAddress address1 = InetAddress.getByName("www.wodexiangce.cn");//获取的是该网站的ip地址,如果我们所有的请求都通过nginx的,所以这里获取到的其实是nginx服务器的IP地址System.out.println(address1.getHostName());//www.wodexiangce.cnSystem.out.println(address1.getCanonicalHostName());//124.237.121.122System.out.println(address1.getHostAddress());//124.237.121.122System.out.println("===============");//用IP地址创建InetAddress对象InetAddress address2 = InetAddress.getByName("220.181.111.188");System.out.println(address2.getHostName());//220.181.111.188System.out.println(address2.getCanonicalHostName());//220.181.111.188System.out.println(address2.getHostAddress());//220.181.111.188System.out.println("===============");//根据主机名返回其可能的所有InetAddress对象InetAddress[] addresses = InetAddress.getAllByName("www.baidu.com");for (InetAddress addr : addresses) {System.out.println(addr);//www.baidu.com/220.181.111.188//www.baidu.com/220.181.112.244}} catch (UnknownHostException e) {e.printStackTrace();}}

二、当服务器有多个网络接口或配置了多个IP地址时

该方法返回的是默认的本地地址,可能是服务器上某个网络接口的IP地址,但不一定是我们期望获取的IP地址。

为了获取正确的IP地址,可以使用其他方法来获取服务器上所有的网络接口,并遍历每个网络接口来获取对应的IP地址。可以使用NetworkInterface类来实现此功能,如下所示:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;public class GetServerIPAddress {public static void main(String[] args) {try {Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();while (interfaces.hasMoreElements()) {NetworkInterface networkInterface = interfaces.nextElement();Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();while (addresses.hasMoreElements()) {InetAddress address = addresses.nextElement();if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {System.out.println("服务器的IP地址是:" + address.getHostAddress());}}}} catch (SocketException e) {e.printStackTrace();}}
}

上述代码中,我们使用NetworkInterface.getNetworkInterfaces()方法获取所有的网络接口,然后遍历每个网络接口,再通过getInetAddresses()方法获取每个网络接口的IP地址。在获取IP地址时,我们可以根据需求进行过滤,例如排除回环地址、链路本地地址,只选择站点本地地址等。

通过这种方式,我们可以获取到服务器上所有网络接口的IP地址,包括多个IP地址的情况。这样可以确保获取到正确的IP地址。

三、当使用代理服务器时

当使用代理服务器时,InetAddress.getLocalHost()方法返回的是本地主机(即运行该代码的主机)的IP地址,而不是代理服务器的IP地址。这是因为getLocalHost()方法返回的是当前主机的IP地址,而不是代理服务器的IP地址。

在使用代理服务器时,如果想要获取代理服务器的IP地址,可以使用其他方法来实现,例如可以发送一个HTTP请求到一个公共的IP地址查询服务,然后从返回的响应中解析出代理服务器的IP地址。

以下是一个示例代码,演示如何通过发送HTTP请求获取代理服务器的IP地址:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;public class GetProxyIPAddress {public static void main(String[] args) {try {URL url = new URL("http://api.ipify.org");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.connect();int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String ipAddress = reader.readLine();System.out.println("代理服务器的IP地址是:" + ipAddress);reader.close();}connection.disconnect();} catch (IOException e) {e.printStackTrace();}}
}

上述代码中,我们发送一个GET请求到http://api.ipify.org,该服务会返回我们的公共IP地址。通过解析响应,我们可以获取到代理服务器的IP地址。请注意,这种方式仅适用于能够访问公共IP地址查询服务的情况。

相关文章:

JAVA如何获取服务器ip

一、最简单的方法就是使用InetAddress获取本机ip InetAddress.getLocalHost().getHostAddress(); public static void main(String[] args) {try {//用 getLocalHost() 方法创建的InetAddress的对象InetAddress address InetAddress.getLocalHost();System.out.println(addr…...

Power BI 傻瓜入门 4. Power BI:亮点

本章内容包含&#xff1a; 在Power BI Desktop上学习诀窍摄入数据使用模型试用Power BI服务 就像评估一个由多种成分组成的蛋糕一样&#xff0c;Power BI要求其用户熟悉商业智能&#xff08;BI&#xff09;解决方案中的功能。几乎所有与Power BI交互的用户都是从桌面版开始的…...

网络参考资料搬运(3)

(1) Python: 使用Python打开新的终端(terminal)并执行语句 通过Python 打开各系统&#xff08;MAC, LINUX, WINDOWS&#xff09;下的终端 &#xff08;Terminal&#xff09; python执行shell脚本的几种方法 自己写Linux命令 用Python写个Linux系统命令 Python 使用sftp传输文件…...

Bias in Emotion Recognition with ChatGPT

本文是LLM系列文章&#xff0c;针对《Bias in Emotion Recognition with ChatGPT》的翻译。 chatGPT在情绪识别中的偏差 摘要1 引言2 方法3 结果4 讨论5 结论 摘要 本技术报告探讨了ChatGPT从文本中识别情绪的能力&#xff0c;这可以作为交互式聊天机器人、数据注释和心理健康…...

【PACS系统源码】与医院HIS系统双向数据交换,实现医学影像集成与影像后处理功能

​医院医学影像PACS系统源码&#xff0c;集成三维影像后处理功能&#xff0c;包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。系统功能强大&#xff0c;代码完整。 PACS系统与医院HIS实现双向数据交换&#xff0c…...

深度学习中常用的激活函数有sigmoid、tanh、ReLU、LeakyReLU、PReLU、GELU等。

深度学习中常用的激活函数 1. Sigmoid函数2. Tanh函数3. ReLU函数4. LeakyReLU函数5. PReLU函数6. ELU函数&#xff1a;7. GELU函数&#xff1a; 深度学习中常用的激活函数有sigmoid、tanh、ReLU、LeakyReLU、PReLU等。 1. Sigmoid函数 Sigmoid函数公式为 f ( x ) 1 1 e −…...

mysql同时使用order by排序和limit分页数据重复问题

目录 场景再现&#xff1a; 解决方案&#xff1a; 问题分析&#xff1a; mysql官方描述&#xff1a; 场景再现&#xff1a; 最近排查数据时发现使用order by及limit分页时会出现不同页数数据重复问题及有的数据分页不会显示,但是按条件搜索就可以搜索出来。 解决方案&#x…...

英语——歌诀篇——歌诀记忆法

介词用法速记歌 年月季前要用in&#xff0c; 日子前面却不行。 遇到几号要用on&#xff0c; 上午下午又用in。 要说某时上下午&#xff0c; 用on换in才可行。 午夜黄昏和黎明&#xff0c; 要用at不用in。 差儿分到几点&#xff0c; 写个“to”在中间。 若是几点过几分&#xf…...

打破运维疆界:异构复杂网络环境的集中监控和管理

在当今多元化的IT环境中&#xff0c;异构环境的管理成为了企业IT团队的一大挑战。如何在多种技术架构、多样的应用环境中实现高效的运维管理&#xff0c;是众多企业正在面临的问题。在本文中&#xff0c;我们将探讨监控易在异构环境中的运维监控表现&#xff0c;并通过实际案例…...

ubuntu安装debian包的命令dpkg和apt的详解

dpkg是Debian Packager的缩写 官方文档https://manpages.ubuntu.com/manpages/jammy/en/man1/dpkg.1.html ubuntu的dpkg命令类似centos的rpm命令&#xff0c;dpkg主要用于对已下载到本地和已安装的.deb软件包进行管理比如安装、构建、删除。dpkg不能自动下载和安装.deb软件包也…...

【暴力剪枝】CF1708D

https://codeforces.com/contest/1708/problem/D 题意 思路 这样的操作下&#xff0c;数列减的速度是非常快的&#xff0c;也就是说&#xff0c;易出现很多的0&#xff0c;0的操作没啥意义&#xff0c;所以我们要找到第一个 >0 的数对其后的序列进行排序&#xff0c;就能大…...

代码格式化的使用

前言 本文主要介绍了代码格式化,以及各个平台如何使用快捷键进行代码格式化,如有错误之处,欢迎在评论区交流讨论~ 代码格式化 代码格式化是一种编程实践&#xff0c;它涉及调整源代码的外观&#xff0c;以提高可读性和一致性。 这包括调整缩进、空格、换行符和括号等元素的使…...

【Unity地编】地形系统搭建入门详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…...

文件的物理结构(连续分配,链接分配,索引分配)

1.文件块&#xff0c;磁盘块 类似于内存分页&#xff0c;磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。 很多操作系统中&#xff0c;磁盘块的大小与内存块、页面的大小相同。 内存与磁盘之间的数据交换&#xff08;即读/写操作、磁盘I/O&#xff09;都是以“块”为…...

vue2 解密图片地址(url)-使用blob文件-打开png格式图片

一、背景 开发中需要对加密文件进行解码&#xff0c;如图片等静态资源。 根据后端给到的url地址&#xff0c;返回的是图片文件&#xff0c;但是乱码的&#xff0c;需要解码成png图片进行展示 二、请求接口 将后端返回的文件转为文件流&#xff0c;创建Blob对象来存储二进制…...

cuda PyTorch

1. GPU对应的CUDA版本 nvidia-smi CUDA Version: 12.2 GPU diver 大于cuda toolkit&#xff0c; pytorch 版本根据cuda toolkit 2. 查看nvcc的版本&#xff08;即cuda toolkit 版本&#xff09; nvcc --version Cuda compilation tools, release 12.2, V12.2.91 Build cud…...

vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决;解决webRTC播放卡花屏问题:

播放多个视频 <div class"video-box"><div class"video"><iframe style"width:100%;height:100%;" name"ddddd" id"iframes" scrolling"auto" :src"videoLeftUrl"></iframe>&l…...

leetcode_2316 统计无向图中无法互相到达点对数

1. 题意 给定一个无向图&#xff0c; 统计无法互相到达的点对数。 统计无法互相到达点对数 2. 题解 其实还是求联通块&#xff0c;求联通块可以使用搜索进行标记。还要求得联通块中元素的大小。 联通块其实也就是不相交集合&#xff0c;也可以用并查集来做。 每求得一个联…...

数据结构知识点总结

一、常见的数据结构 数组&#xff0c;栈&#xff0c;队列&#xff0c;链表&#xff0c;散列表&#xff0c;二叉树&#xff0c;堆&#xff0c;跳表&#xff0c;图&#xff0c;树。 1. 数组&#xff1a; 数组的元素在内存中存储是连续存放的&#xff0c;占有连续的存储单元&am…...

【经济研究】数字技术创新与中国企业高质量发展—来自企业数字专利的证据

数据简介&#xff1a;在当前数字经济时代&#xff0c;数字技术创新已成为驱动中国经济发展的核心要素&#xff0c;中国经济由高速增长转向高质量发展的“新常态”发展阶段&#xff0c;开启了革新经济增长方式&#xff0c;优化产业结构&#xff0c;寻找新的经济增长动能关键期。…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

基于鸿蒙(HarmonyOS5)的打车小程序

1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...