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

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

Android開發之InetAddress基礎入門簡介與源碼實例

瀏覽:135日期:2022-09-26 09:58:48

最近在學習soket編程中,看到有需要獲取到IP地址之類的需求,所以就去看了下如何獲取到主機名的IP地址。

其實就是需要用到一個類InetAddress。他是在java.net包下面。

InetAddress類的對象用于IP地址和域名,該類提供以下方法:

getByName(String s):獲得一個InetAddress 類的對象,該對象中含有主機的IP地址和域名,該對象用如下格式表示它包含的信息:www.sina.com.cn/202.108.37.40;

String getHostName():獲取InetAddress對象的域名;

String getHostAddress():獲取InetAddress對象的IP地址;

getLocalHost():獲得一個InetAddress對象,該對象含有本地機的域名和IP地址。

private void test() { try { InetAddress locAdd = InetAddress.getLocalHost(); //得到本地InetAddress對象 /* get www.baidu.com’s ip */ InetAddress remAdd = InetAddress.getByName('www.baidu.com'); //取得遠程InetAddress對象 System.out.println('本機IP地址:' + locAdd.getHostAddress()); //得到本地IP地址 System.out.println('百度IP地址:' + remAdd.getHostAddress()); //得到百度IP地址 System.out.println('本機是否可達:' + locAdd.isReachable(10000)); //10000是超時時間,10s /*打印:本機IP地址:192.168.1.109百度IP地址:115.239.210.26本機是否可達:true */ } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

很多情況是,某一域名對應的主機IP是可能有多個的,我們也可以一一的取回來。如下:

private void test2() { try { /* 百度可能有多個IP地址,解析回來,所以我們可以用一個數組裝起來 */ InetAddress[] addrs = InetAddress.getAllByName('www.baidu.com'); if (addrs != null && addrs.length > 0) {for (InetAddress addr : addrs) { System.out.println('--->' + addr.getHostAddress());} } } catch (UnknownHostException e) { e.printStackTrace(); } }

IP地址是IP使用的32位(IPv4)或者128位(IPv6)位無符號數字,它是傳輸層協議TCP,UDP的基礎。InetAddress是Java對IP地址的封裝,在java.net中有許多類都使用到了InetAddress,包括ServerSocket,Socket,DatagramSocket等等。

InetAddress的實例對象包含以數字形式保存的IP地址,同時還可能包含主機名(如果使用主機名來獲取InetAddress的實例,或者使用數字來構造,并且啟用了反向主機名解析的功能)。InetAddress類提供了將主機名解析為IP地址(或反之)的方法。

InetAddress對域名進行解析是使用本地機器配置或者網絡命名服務(如域名系統(Domain Name System,DNS)和網絡信息服務(Network Information Service,NIS))來實現。

對于DNS來說,本地需要向DNS服務器發送查詢的請求,然后服務器根據一系列的操作,返回對應的IP地址,為了提高效率,通常本地會緩存一些主機名與IP地址的映射,這樣訪問相同的地址,就不需要重復發送DNS請求了。

在java.net.InetAddress類同樣采用了這種策略。在默認情況下,會緩存一段有限時間的映射,對于主機名解析不成功的結果,會緩存非常短的時間(10秒)來提高性能。

InetAddress類

該類代表ip地址,下面還有兩個子類,分別是Inet4Address和Inet6Address他們分別代表IPV4地址和IPV6地址

該類沒有構造器,可以通過它的兩個靜態方法來獲取InetAddress的實例

>getByName(String host) 根據主機名獲取對應的InetAddress對象

使用IP地址創建InetAddress對象(getByName,getAllByName,getByAddress方法都可以通過IP地址創建InetAddress對象)時,并不需要訪問DNS服務器。因此,通過DNS服務器查找域名的工作就由getHostName方法來完成。

如果IP地址不存在或DNS服務器不允許進行IP地址和域名映射,就返回這個IP地址。

InetAddress address=InetAddress.getByName('141.146.8.66');

System.out.println(address.getHostName());//需要訪問DNS服務器才能得到域名

InetAddress address=InetAddress.getByName('1.2.3.4');//IP地址不存在

System.out.println(address.getHostName());//直接返回IP地址

用域名作為getByName和getAllByName方法的參數得到的InetAddress對象,該對象會得到這個域名,當調用 getHostName時,就無需再訪問DNS服務器,而是直接將這個域名返回。

InetAddress address=InetAddress.getByName('www.jb51.net');

System.out.println(address.getHostName());//不需要訪問DNS服務器就能得到域名

try {InetAddress address = InetAddress.getByName('www.jb51.net');System.out.println(address);//www.jb51.net/119.75.218.70} catch (UnknownHostException e) {e.printStackTrace();}>getByAddress(byte[] addr)根據源ip地址來獲取InetAddress對象

InetAddress address;try {address= InetAddress.getByAddress(new byte[]{119,75,218,70});System.out.println(address);//輸出結果為:/119.75.218.70和字符串str相一致address = InetAddress.getByAddress('www.jb51.net', ipBuf);System.out.println(address);//輸出結果為www.jb51.net/119.75.218.70} catch (UnknownHostException e) {e.printStackTrace();}>InetAddress.getLocalHost()獲取本機的ip地址的主機名

try {InetAddress a = InetAddress.getLocalHost();System.out.println(a);//本機用戶名-PC/本機Ip} catch (UnknownHostException e) {e.printStackTrace();}

該類常用的其他幾個方法:

try {InetAddress address=InetAddress.getLocalHost();System.out.println(address.getHostAddress());//輸出ip字符串System.out.println(address.getHostName());//輸出用戶名System.out.println(address.getCanonicalHostName());//輸出本機的主機名.權限定域名(lan)} catch (UnknownHostException e) {e.printStackTrace();}getCanonicalHostName()方法

定義:public String getCanonicalHostName()

該方法和getHostName方法一樣,也是得到遠程主機的域名。區別是,該方法得到的是主機名,getHostName得到的是主機別名。

1. 使用 getLocalHost() 創建InetAddress對象

此時getCanonicalHostName方法和getHostName方法得到的都是本機名

2. 使用域名 創建InetAddress對象

使用域名創建InetAddress對象后,getHostName方法不會訪問DNS服務器

但getCanonicalHostName方法就不一定了,這取決于DNS服務器如何解釋主機名和主機別名

3. 使用IP地址 創建InetAddress對象

此時getCanonicalHostName方法和getHostName方法完全相同,返回的都是主機名,而不是主機別名。

之所以要使用主機別名,是因為有時主機名可能比較復雜,如Oracle官方網站的主機名bigip-otn-portal.oracle.com,因此,為了使用戶訪問網站更方便,就增加了更簡單的主機別名,如 www.oracle.com

本文主要介紹了Android InetAddress基礎入門簡介與源碼實例,更多關于Android開發技巧請查看下面的相關鏈接

標簽: Android
相關文章:
主站蜘蛛池模板: 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 福建省教师资格证-福建教师资格证考试网 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 雪花制冰机(实验室雪花制冰机)百科 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 仿古建筑设计-仿古建筑施工-仿古建筑公司-汉匠古建筑设计院 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 北京开源多邦科技发展有限公司官网 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 水平筛厂家-三轴椭圆水平振动筛-泥沙震动筛设备_山东奥凯诺矿机 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 高清视频编码器,4K音视频编解码器,直播编码器,流媒体服务器,深圳海威视讯技术有限公司 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 小型铜米机-干式铜米机-杂线全自动铜米机-河南鑫世昌机械制造有限公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | LCD3D打印机|教育|桌面|光固化|FDM3D打印机|3D打印设备-广州造维科技有限公司 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 广州二手电缆线回收,旧电缆回收,广州铜线回收-广东益福电缆线回收公司 | 无锡网站建设-做网站-建网站-网页设计制作-阿凡达建站公司 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 |