java网络---查找Internet
连接到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
InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取,有以下的方法: static InetAddress[] getAllByName(String host) static InetAddress getByAddress(byte[] addr) static InetAddress getByAddress(String host,byte[] addr) static InetAddress getByName(String host) static InetAddress getLocalHost()
InetAddress address=InetAddress.getByName("www.baidu.com");
@Override
public void start() {
try {
InetAddress address = InetAddress.getByName("www.oreilly.com");
TraceLog.i(address.toString());
}catch (UnknownHostException e) {
e.printStackTrace();
}catch (Exception e)
{
e.printStackTrace();
}
}
12-23 16:45:10.786 4286-4909/com.joyfulmath.sample.javanetwork I/System.out: [CDS][DNS] getAllByNameImpl netId = 0
12-23 16:45:10.791 4286-4909/com.joyfulmath.sample.javanetwork I/System.out: propertyValue:true
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)]
地址类型:
/**
* Returns whether this address is a loopback address or not.
*
* <p>Valid IPv4 loopback addresses have the prefix {@code 127/8}.
*
* <p>The only valid IPv6 loopback address is {@code ::1}.
*/
public boolean isLoopbackAddress() {
return false;
}
是否为本地地址,默认一般为127.0.0.1 这样的地址。
可达性:
就是让应用程序测试,当前主机能否达到某个连接。
private void test3() throws IOException
{
InetAddress address = InetAddress.getByName("www.oreilly.com");
TraceLog.i(String.valueOf(address.isReachable(1000)));
}
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表示的是物理接口或者虚拟地址。
private void test4() throws SocketException
{
Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface nif = netInterfaces.nextElement();
Enumeration<InetAddress> iparray = nif.getInetAddresses();
while (iparray.hasMoreElements()) {
InetAddress ip = iparray.nextElement();
TraceLog.i(ip.getHostAddress());
}
}
}
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)]
12-24 10:06:28.250 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test1: www.oreilly.com [at (INetAddressSample.java:38)]
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)]
12-24 10:06:28.268 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test2: true [at (INetAddressSample.java:46)]
12-24 10:06:29.271 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test3: false [at (INetAddressSample.java:53)]
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)]
12-24 10:06:29.301 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test4: 10.59.92.19 [at (INetAddressSample.java:64)]
12-24 10:06:29.301 9472-10121/com.joyfulmath.sample.javanetwork I/INetAddressSample: test4: ::1%1 [at (INetAddressSample.java:64)]
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的更多相关文章
- Java网络编程技术1
1. Java网络编程常用API 1.1 InetAddress类使用示例 1.1.1根据域名查找IP地址 获取用户通过命令行方式指定的域名,然后通过InetAddress对象来获取该域名对应的IP地 ...
- Java网络编程学习A轮_01_目标与基础复习
A. A轮目标 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况. 回顾 Socket 编程,好多年没写(chao)过相关代码了. 重学 NIO,以前学的基本忘光了,毕竟 ...
- java 网络编程复习(转)
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...
- 20145225《Java程序设计》 实验五 Java网络编程及安全
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...
- Java 网络编程----基本概念
网络现在是一个非常普遍的概念. 以下是维基百科上的解释: 网络一词有多种意义,可解作: 网络流也简称为网络(network).一般用于管道系统.交通系统.通讯系统建模. 有时特指计算机网络. 或特指其 ...
- 20145208 实验五 Java网络编程
20145208 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...
- java网络编程serversocket
转载:http://www.blogjava.net/landon/archive/2013/07/24/401911.html Java网络编程精解笔记3:ServerSocket详解ServerS ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- 20145220 实验五 Java网络编程
20145220 实验五 Java网络编程 实验内容 1.用书上的TCP代码,实现服务器与客户端. 2.客户端与服务器连接 3.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务 ...
随机推荐
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎
作者:廖君链接:https://www.zhihu.com/question/19868791/answer/88873783来源:知乎 分布式系统(Distributed System)资料 < ...
- Xcode 报错信息
1.CUICatalog: Invalid asset name supplied: 原因是: 使用的方法[UIImage imageNamed:@""]; @"&quo ...
- nginx 更新提示端口占用的解决办法
最近更新ubuntu下的nginx,报了以下的错误, [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use) 可以看到,80 ...
- 网络编程:socket--python核心编程(3),chapter 1
最近两天把第一部分的网络编程socket好好学习了一番,收获也蛮多的... 套接字:能使运行在不同或相同计算机上运行的进行通信:套接字一种是基于文件的(同一台计算机进程间通信),另一种是基于网络的(同 ...
- [C#] 语法之Attribute
在c#中,定义类的成员,可以定义Property称为属性.Attribute就称为特性. 在FCL中,有内置的Attribute.如: Condition[Attribute]:在什么条件可以调用.( ...
- CCFlow SDK模式开发
需求: 1.业务数据要保存在我们自己的数据库里 2.CCFlow有保存草稿的功能,但是领导要求每个业务都要有草稿箱,流程从草稿箱发起,每个业务单独查询,而不要在CCFlow的统一界面查询,所以每 ...
- java.lang.NullPointerException org.apache.jsp.WEB_002dINF.pages.imagecheck.test_jsp._jspInit(test_jsp.java:22)的原因
HTTP Status 500 - type Exception report message description The server encountered an internal error ...
- Mongoose 框架初学使用记录
嘛.... 最近由于需要使用HTTP服务端,原先是使用的Qt框架实现的HTTP服务端,然后发现有些缺陷导致我不得不放弃这个框架,也不是完全放弃,只是HTTP服务端这里不再使用Qt,用Qt做高并发真的有 ...
- jQuery中each()、find()、filter()等节点操作方法
1.each(callback) 官方解释: 返回值:jQuery 概述 以每一个匹配的元素作为上下文来执行一个函数. 意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元 ...
- 常用Keytool 命令
常用Keytool 命令Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具.它管理一个存储了私有钥匙和验证相应公共钥匙的与它们相关联的X.509 证书链的keystore(相当一个数据库, ...