电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java獲取linux服務器上的IP操作

瀏覽:45日期:2022-08-26 16:13:04

在編碼過程中需要獲取本地IP地址,首先使用的是下面的方法,在Windows環境正常,但是linux服務器上就獲取不到,

public static String getIpAddress() { String hostAddress = ''; try { InetAddress address = InetAddress.getLocalHost(); hostAddress = address.getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace(); } return hostAddress; }

這樣在linux上依然獲取到的是127.0.0.1,

查詢服務器上面IP發現:

[mm_cbms1@localhost ~]$ ip address

1:

lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope host valid_lft forever preferred_lft forever

2:

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000link/ether 00:50:56:a2:0d:1b brd ff:ff:ff:ff:ff:ffinet 10.12.8.243/24 brd 10.12.8.255 scope global eth0inet6 fe80::250:56ff:fea2:d1b/64 scope link

valid_lft forever preferred_lft forever

這里首先要了解上面列出的接口中的含義:

1、linux的網絡接口之掃盲

(1) 網絡接口的命名

這里并不存在一定的命名規范,但網絡接口名字的定義一般都是要有意義的。例如:

eth0: ethernet的簡寫,一般用于以太網接口。

wifi0:wifi是無線局域網,因此wifi0一般指無線網絡接口。

ath0: Atheros的簡寫,一般指Atheros芯片所包含的無線網絡接口。

lo: local的簡寫,一般指本地環回接口。

(2) 網絡接口如何工作

網絡接口是用來發送和接受數據包的基本設備。

系統中的所有網絡接口組成一個鏈狀結構,應用層程序使用時按名稱調用。

每個網絡接口在linux系統中對應于一個struct net_device結構體,包含name,mac,mask,mtu…信息。

每個硬件網卡(一個MAC)對應一個網絡接口,其工作完全由相應的驅動程序控制。

(3) 虛擬網絡接口

虛擬網絡接口的應用范圍非常廣泛。最著名的當屬“lo”了,基本上每個linux系統都有這個接口。

虛擬網絡接口并不真實地從外界接收和發送數據包,而是在系統內部接收和發送數據包,因此虛擬網絡接口不需要驅動程序。

虛擬網絡接口和真實存在的網絡接口在使用上是一致的。

(4) 網絡接口的創建

硬件網卡的網絡接口由驅動程序創建。而虛擬的網絡接口由系統創建或通過應用層程序創建。

驅動中創建網絡接口的函數是:register_netdev(struct net_device *)或者register_netdevice(struct net_device *)。

這兩個函數的區別是:register_netdev(…)會自動生成以”eth”作為打頭名稱的接口,而register_netdevice(…)需要提前指定接口名稱.事實上,register_netdev(…)也是通過調用register_netdevice(…)實現的。

2、LINUX中的lo(回環接口)

1) 什么是LO接口?

在LINUX系統中,除了網絡接口eth0,還可以有別的接口,比如lo(本地環路接口)。

2) LO接口的作用是什么?

假如包是由一個本地進程為另一個本地進程產生的, 它們將通過外出鏈的’lo’接口,然后返回進入鏈的’lo’接口。

其實getLocalHost方法獲取的是lo接口對應的IP地址,了解了上述問題那java編碼如何獲取正確的地址呢?

java為了方便網絡編程,提供了表示IP地址的類、表示網絡接口(這個接口是指網卡)的類,表示網絡連接接口的類,例如InetAddress,但是測試發現NetworkInterface類同樣提供了獲取本地計算機網絡接口相關的信息的方法。盡管InetAddress類提供獲取IP地址的方法,但是要想獲取本機的網絡接口的詳細信息,還需要依賴NetworkInterface接口中的方法。測試發現下面方法可以獲得服務器對應的IP地址,在linux服務器上和本地測試通過

(1)

public static String getInet4Address() { Enumeration<NetworkInterface> nis; String ip = null; try { nis = NetworkInterface.getNetworkInterfaces(); for (; nis.hasMoreElements();) { NetworkInterface ni = nis.nextElement(); Enumeration<InetAddress> ias = ni.getInetAddresses(); for (; ias.hasMoreElements();) { InetAddress ia = ias.nextElement(); //ia instanceof Inet6Address && !ia.equals('') if (ia instanceof Inet4Address && !ia.getHostAddress().equals('127.0.0.1')) { ip = ia.getHostAddress(); } } } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ip; }

(2)

public static InetAddress getCurrentIp() { try { Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) {NetworkInterface ni = (NetworkInterface) networkInterfaces.nextElement();Enumeration<InetAddress> nias = ni.getInetAddresses();while (nias.hasMoreElements()) { InetAddress ia = (InetAddress) nias.nextElement(); if (!ia.isLinkLocalAddress() && !ia.isLoopbackAddress() && ia instanceof Inet4Address) { return ia; }} } } catch (SocketException e) { logger.error(e.getStackTrace()); } return null; }

上述兩個方法都可以獲取正確的IP地址,具體NetworkInterface的使用還需要以后應用到了進行深入研究一下

補充知識:Java獲取所有網卡IP地址

Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) { NetworkInterface networkInterface = networkInterfaces.nextElement(); Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses(); while (inetAddresses.hasMoreElements()) {InetAddress inetAddress = inetAddresses.nextElement();if (inetAddress.isLoopbackAddress()) {//回路地址,如127.0.0.1System.out.println('loop addr:' + inetAddress);} else if (inetAddress.isLinkLocalAddress()) {//169.254.x.xSystem.out.println('link addr:' + inetAddress);} else { //非鏈接和回路真實ipSystem.out.println('ip:' + inetAddress);} } }

結果:

loop addr:/127.0.0.1loop addr:/0:0:0:0:0:0:0:1ip:/192.168.10.89

以上這篇java獲取linux服務器上的IP操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | 缠膜机|缠绕包装机|无纺布包装机-济南达伦特机械设备有限公司 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 便携式谷丙转氨酶检测仪|华图生物科技百科 | 蒸压釜_蒸养釜_蒸压釜厂家-山东鑫泰鑫智能装备有限公司 | 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 设定时间记录电子秤-自动累计储存电子秤-昆山巨天仪器设备有限公司 | 电缆接头_防水接头_电缆防水接头 - 乐清市新豪电气有限公司 | 周口风机|周风风机|河南省周口通用风机厂| ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 锌合金压铸-铝合金压铸厂-压铸模具-冷挤压-誉格精密压铸 | pos机办理,智能/扫码/二维码/微信支付宝pos机-北京万汇通宝商贸有限公司 | 建筑资质代办_工程施工资质办理_资质代办公司_北京众聚企服 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 微量水分测定仪_厂家_卡尔费休微量水分测定仪-淄博库仑 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 佛山市德信昌电子有限公司| 517瓜水果特产网|一个专注特产好物的网站| 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 光栅尺厂家_数显表维修-苏州泽升精密机械 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 |