JAVA学习网首页 把生活查询网加入收藏 把JAVA学习网设为首页 联系方式
    Hi,JAVA学习
JAVA基础 设计模式 数据库 JavaBeans J2EE JavaDelphi 用户界面 综合文章  
Java Network Programming 笔记(2)
时间:22/04/2007
作者:网络
来源:网络
小提示点这里把文章加入您的收藏夹,方便下次查看
设置文章字体大小:[ ]

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


上一篇:对 Object 类中方法的一些简单认识

下一篇:Java Network Programming 笔记(2)

  • XPlanner 一个Web界面的XP团队计划和跟踪工具
  • 如何判断输入的文本是否日期格式
  • JBuilder9+SQL SERVER 2000数据库连接技巧
  • Java Network Programming 笔记(2)
  • 模拟对象(mock object)是如何出现的
  • 企业管理软件在J2ME无线平台中的应用
  • eBay架构的思想金矿
  • 我们是否应该使用JMS?
  • 宠物店大战 (J2EE 与 .NET)
  • Eclipse学习4-在Eclipse中使用JUnit进行单元测试(下)
  • 我使用javamail处理中文遇到的一些棘手问题及解决方法
  • JAVA写的简单UBB类
  • java指南之使用图形:解决常见图像问题
  • 从商业角度分析J2EE与WINDOWS DNA 体系结构
  • Java学习从入门到精通
  • Java的破解和反破解之道
  • 在Servlet与JSP中取得当前文件所在的相对路径与绝对路径
  • [自创]JCreator安装学习使用方法(祝好友Demon!学习Java顺利)
  • 返回】 【顶部】 【关闭
    Copyright © 2005-2010 www.594k.com All Rights Reserved.
    版权所有:JAVA学习网 备案序号:皖ICP备06004238号