连接到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. GitHub上那些值得一试的JAVA开源库

    作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,Spring,Hibernate等等.除了这些,你可能还会fork或Star一些其他的开 ...

  2. [转载]Windows 2012 R2安装SharePoint 2013 手动安装工具软件

    之前介绍过在window 2012中安装SharePoint 2013,这次,借着SharePoint 2013 sp1补丁发布之际,介绍下在window 2012 r2中安装SharePoint 2 ...

  3. IOS开发UI基础文本属性Attributes

    文本属性Attributes 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSFontAttributeName : [UIFont systemFo ...

  4. 《深入理解Java集合框架》系列文章

    Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framewo ...

  5. Python入门笔记(19):Python函数(2):函数/方法装饰器

    一.装饰器(decorators) 装饰器的语法以@开头,接着是装饰器函数的名字.可选参数. 紧跟装饰器声明的是被装饰的函数和被装饰的函数的可选参数,如下: @decorator(dec_opt_ar ...

  6. js禁止复制页面文字

    做项目的时候有客户提出要求,不能用用户浏览他发表的文章时复制他的文章 一种比较简单的方法,禁止用户选中页面的文字和禁止用户右键菜单 document.oncontextmenu = new Funct ...

  7. Xcode配置libdc1394

    libdc1394是一个开源库,提供了一个Mac下完整的1394相机编程接口,这篇文章将介绍Xcode如何配置该库. 步骤: 1.下载libdc1394的源码,并解压 http://damien.do ...

  8. ACdream 1214---矩阵连乘

    ACdream 1214---矩阵连乘 Problem Description You might have noticed that there is the new fashion among r ...

  9. mvc设计模式和mvc框架的区别

    Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...

  10. HTML JavaScript简介

    一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...