Java Network Programming 笔记
n5
二 查找Internet地址
Chapter 6 Looking up Internet Addresses
java.net.InetAddress类是java对IP地址的封装,这个类被其他大多数网络类使用,包括Socket,ServerSocket,URL,DatagramSocket,DatagramPacket。
该类中包含hostName和address,但不是public的。
1 获得InetAddress对象
InetAddress类没有公有构造器,通过三个static方法可得到InetAddress对象:
public static InetAddress InetAddress.getByName(String hostName) throws UnknownHostException
public static InetAddress[] InetAddress.getAllByName(String hostName) throws UnknownHostException
public static InetAddress InetAddress.getLocalHost() throws UnknownHostException
这三个方法会进行网络连接去得到它们需要的所有信息。类中的其他方法如getAddress()和getHostName()使用这3个方法提供的信息而不进行网络连接,不过非常小的情况它们也会连接网络但不抛出任何异常。
参数hostName可以是网址如www.xxx.com也可以是字符串形式的点分IP地址如10.2.3.4
Java1.1以后,如果用IP地址做参数,将根据这个IP地址创建一个InetAdress对象,而不使用DNS检查。这就可能创建一个主机并不存在的InetAddress对象。使用这种方法创建的InetAddress对象,主机名(hostName)被初始化为点分IP地址。只有当hostname被请求时(显示的如调用getAddress(),隐式的如调用toString()),DNS才会检查实际的主机名,如果DNS检查发现指定的IP地址找不到,则hostname保留为原来的点分IP地址,而不会抛出UnknownHostException
HostName比IP地址稳定,对于一个主机HostName往往不变而IP地址可能变化,所以最好使用hostname做参数,而只有当主机没有hostname时才使用点分ip地址。
有些主机有不止一个IP地址,使用getAllByName()可以以数组的形式得到某主机名对应的所有IP地址。
getLocalHost()获得本机的InetAddress对象
2 获得信息
public String getHostName()
可以得到hostname,特别是用点分IP地址作为参数得到InetAddress对象时可用getHostName得到hostname.
public String getHostAddress()
得到点分IP地址字符串,可用这个方法打印出IP地址
public byte[] getAddress()
得到IP地址,存储在byte数组中,比如IPv4格式的IP地址10.2.3.4会得到长度为4的数组ip,则ip[0]=10,ip[1]=2,ip[2]=3,ip[3]=4;若是IPv6,则数组长度就不是4了
注意,返回的byte应该是无符号的,0~255,但java的byte是以带符号的。大于127的byte被看作负数。因此,应该用int(或short等)存放ip地址的每一个数字,并做相应的调整
int unsignedByte = signedByte < 0 ? singedByte + 256 : singedByte ;
3
public boolean equals(Object o)
一个Object对象equals to一个InetAddress对象的条件是该Object是InetAddress类的一个实例并且它们具有相同的IP地址。equals不需要hostname相同。
4 例程 HostLookup.java
分享到:
相关推荐
2. **TCP/IP编程**: TCP(传输控制协议)是一种面向连接、可靠的通信方式。Java中的Socket和ServerSocket类实现了TCP协议。Socket用于客户端,ServerSocket用于服务端。建立连接后,双方可以进行双向数据传输。 3...
Chapter 2. Basic Network Concepts Section 2.1. Networks Section 2.2. The Layers of a Network Section 2.3. IP, TCP, and UDP Section 2.4. The Internet Section 2.5. The Client/Server Model ...
### Java网络编程与分布式计算关键知识点 #### 一、Java网络编程基础 ##### 1. 网络架构与TCP/IP协议 - **互联网架构**:本书首先介绍了互联网的基本架构,包括不同层次的功能划分以及各层之间的交互方式。这对于...
《Addison Wesley - Java Network Programming and Distributed Computing》是一本深入探讨Java编程在网络和分布式计算领域的专著。这本书旨在帮助读者理解如何利用Java语言构建高效、可靠的网络应用程序,并且掌握...
《Java Network Programming 2nd》是一本专注于Java网络编程的权威指南,主要涵盖了使用Java语言进行网络应用开发的各种技术和实践。这本书深入浅出地讲解了如何利用Java API进行网络通信,包括TCP/IP套接字、多线程...
An Introduction to Network Programming with Java
Java Network Programming 4th.epub
经典网络编程作品——Unix Network Programming 包括第1卷、第2卷的中...Unix Network Programming - vol2 ed2 lnterprocess Communications.pdf UNIX网络编程第1卷:套接口API.pdf UNIX网络编程第2卷:进程间通信.pdf
《UNIX Network Programming Volume 2》(Unix网络编程卷2英文版,djvu格式,带绿色小巧的阅读器) 原书名: UNIX Network Programming Volume 2:Interprocess Communications 2nd ed. 原出版社: Prentice Hall/...
比较经典的讲stream,socket的书吧,具体信息可以去各商城上看,本人也买了纸质书,这个仅为在电脑或pad上看着方便
java网络编程 Java.Network.Programming.3rd.Edition.Oct.2004