连接到Internet的设备称为节点,计算机节点称为host。

为了区别每一台连接互联网的计算机,就有了Internet Protocol地址的概念。

IPV4 & IPV6

我们以前默认的是IPV4. 也就类似于192.168.0.1 这样的地址

但是,由于连接到网络的设备急剧增加,IPv4 会不够。所以有了IPV6

这里4 和6 是协议的版本,不是ip地址的个数。

IPV6 是以8个字段表示的地址。

IP地址对于计算机很重要,但是对于个人来说,很难记住那么多的数字。尤其是当有很多的网址的时候。

于是有了域名系统,也就是我们打入“www.baidu.com” 他会连接到115.239.211.112这样的地址。

一:InetAddress

  1. InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取,有以下的方法:
  2.  
  3. static InetAddress[] getAllByName(String host)
  4.  
  5. static InetAddress getByAddress(byte[] addr)
  6.  
  7. static InetAddress getByAddress(String host,byte[] addr)
  8.  
  9. static InetAddress getByName(String host)
  10.  
  11. static InetAddress getLocalHost()
  1. InetAddress address=InetAddress.getByName("www.baidu.com");
  1. @Override
  2. public void start() {
  3. try {
  4. InetAddress address = InetAddress.getByName("www.oreilly.com");
  5. TraceLog.i(address.toString());
  6. }catch (UnknownHostException e) {
  7. e.printStackTrace();
  8. }catch (Exception e)
  9. {
  10. e.printStackTrace();
  11. }
  12. }
  1. 12-23 16:45:10.786 4286-4909/com.joyfulmath.sample.javanetwork I/System.out: [CDS][DNS] getAllByNameImpl netId = 0
  2. 12-23 16:45:10.791 4286-4909/com.joyfulmath.sample.javanetwork I/System.out: propertyValue:true
  3. 12-23 16:45:10.792 4286-4909/com.joyfulmath.sample.javanetwork I/INetAddressSample: start: www.oreilly.com/104.91.236.215 [at (INetAddressSample.java:18)]

地址类型:

  1. /**
  2. * Returns whether this address is a loopback address or not.
  3. *
  4. * <p>Valid IPv4 loopback addresses have the prefix {@code 127/8}.
  5. *
  6. * <p>The only valid IPv6 loopback address is {@code ::1}.
  7. */
  8. public boolean isLoopbackAddress() {
  9. return false;
  10. }

是否为本地地址,默认一般为127.0.0.1 这样的地址。

可达性:

就是让应用程序测试,当前主机能否达到某个连接。

  1. private void test3() throws IOException
  2. {
  3. InetAddress address = InetAddress.getByName("www.oreilly.com");
  4. TraceLog.i(String.valueOf(address.isReachable(1000)));
  5. }
  1. 12-24 09:50:40.465 31459-31726/com.joyfulmath.sample.javanetwork I/INetAddressSample: test3: false [at (INetAddressSample.java:49)]

由于全球网络内部很多都有防火墙之类的东西,所以结果很多情况下都是false。

equals方法:

判断方式只是ip地址,不考虑主机。

二:NetworkInterface

InetAddress是ip地址的高级表示,NetworkInterface表示的是物理接口或者虚拟地址。

  1. private void test4() throws SocketException
  2. {
  3. Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
  4. while (netInterfaces.hasMoreElements()) {
  5. NetworkInterface nif = netInterfaces.nextElement();
  6. Enumeration<InetAddress> iparray = nif.getInetAddresses();
  7. while (iparray.hasMoreElements()) {
  8. InetAddress ip = iparray.nextElement();
  9. TraceLog.i(ip.getHostAddress());
  10. }
  11. }
  12. }
  1. 12-24 10:06:28.250 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test1: www.oreilly.com/23.44.132.94 [at (INetAddressSample.java:36)]
  2. 12-24 10:06:28.250 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test1: www.oreilly.com [at (INetAddressSample.java:38)]
  3. 12-24 10:06:28.268 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test2: getLocalHost localhost/127.0.0.1 [at (INetAddressSample.java:44)]
  4. 12-24 10:06:28.268 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test2: true [at (INetAddressSample.java:46)]
  5. 12-24 10:06:29.271 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test3: false [at (INetAddressSample.java:53)]
  6. 12-24 10:06:29.300 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test4: fe80::6a3e:34ff:fe33:3561%wlan0 [at (INetAddressSample.java:64)]
  7. 12-24 10:06:29.301 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test4: 10.59.92.19 [at (INetAddressSample.java:64)]
  8. 12-24 10:06:29.301 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test4: ::1%1 [at (INetAddressSample.java:64)]
  9. 12-24 10:06:29.302 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test4: 127.0.0.1 [at (INetAddressSample.java:64)]

参考:

http://blog.csdn.net/maosijunzi/article/details/8620922

java网络---查找Internet的更多相关文章

  1. Java网络编程技术1

    1. Java网络编程常用API 1.1 InetAddress类使用示例 1.1.1根据域名查找IP地址 获取用户通过命令行方式指定的域名,然后通过InetAddress对象来获取该域名对应的IP地 ...

  2. Java网络编程学习A轮_01_目标与基础复习

    A. A轮目标 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况. 回顾 Socket 编程,好多年没写(chao)过相关代码了. 重学 NIO,以前学的基本忘光了,毕竟 ...

  3. java 网络编程复习(转)

    好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...

  4. 20145225《Java程序设计》 实验五 Java网络编程及安全

    20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...

  5. Java 网络编程----基本概念

    网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...

  6. 20145208 实验五 Java网络编程

    20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

  7. java网络编程serversocket

    转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerS ...

  8. java网络编程socket解析

    转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...

  9. 20145220 实验五 Java网络编程

    20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...

随机推荐

  1. 免费下载!Twitter Bootstrap V3 矢量界面素材

    Bootstrap 3 Vector UI Kit 包含所有矢量格式的 Twitter Bootstrap 3 界面控制元素.Glyphicons 以及额外的一些界面素材,而且基本的图形元素都切好图了 ...

  2. Ioc原理及常用框架

    1 IoC理论的背景    我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.  图1:软件系统中耦合的对象 如果我们 ...

  3. C#函数式程序设计之局部套用与部分应用

    函数式设计的核心与函数的应用以及函数如何作为算法的基本模块有关.利用局部套用技术可以把所有函数看成是函数类的成员,这些函数只有一个形参,有了局部套用,才有部分应用.部分应用是使函数模块化成为可能的两个 ...

  4. Spring基础—— 在 Spring Config 中使用外部属性文件

    一.在 Spring Config 文件中配置 Bean 时,有时候需要在 Bean 的配置里添加 系统部署的细节信息, 如文件路径,数据源配置信息.而这些部署细节实际上需要在配置文件外部来定义. 二 ...

  5. 较友好的Web文件下载用户体验实例

    1.实际需求整理与分析 该问题起源于为公司做的一个B/S架构的游戏静态数据管理工具,其中有一个需求是点击页面上的一些按钮要下载文件,可能根据按钮类型的不同需要转换下载.json..zip..xlsx等 ...

  6. C#函数、参数数组(例子)★

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 从零开始学习Linux(mkdir and rmdir)

    今天说mkdir 和 rmdir.因为mkdir 内容比较少.而且也很好理解. 对于mkdir来说,一般只用到 -p -m,我只用过-p参数,-m也是刚刚看的. 先说不带参数的: mkdir  tes ...

  8. C语言范例学习03-中

    栈和队列 这两者都是重要的数据结构,都是线性结构.它们在日后的软件开发中有着重大作用.后面会有实例讲解. 两者区别和联系,其实总结起来就一句.栈,后进先出:队列,先进先出. 可以将栈与队列的存储空间比 ...

  9. Hibernate的缓存技术详解

    转载注明出处:http://www.cnblogs.com/xiaoming0601/p/5882980.html 一.什么是缓存: 并不是指计算机的内存或者CPU的一二级缓存:缓存是指为了降低应用程 ...

  10. Google OKR 目标管理体系学习

    OKR 全称是「目标和关键成果」(Objectives and Key Results).它是Google在公司创立不足一年的时候,从Intel公司引入的目标管理系统,也常被认为是一套组织测评系统. ...