java点滴之InetAddress类和InetSocketAddress的使用

一、简介

InetAddress是Java对IP地址的封装,代表互联网协议(IP)地址;
InetAddress对象的获取只能通过静态方法,比如根据主机名获取主机的ip地址封装对象:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. InetAddress add=InetAddress.getByName("BOPZKQZ9SSY5ECY");    

主机名:BOPZKQZ9SSXXXXX,  ip地址:1XX.1XX.2XX.210

InetSocketAddress是SocketAddress的实现子类。

此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。
在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress类来向connect方法传递服务器的IP和端口。
SocketAddress只是个抽象类,它除了有一个默认的构造方法外,其它的方法都是abstract的,因此,我们必须使用SocketAddress的子类来建立SocketAddress对象,也就是唯一的子类InetSocketAddress


二、主要功能方法

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. InetAddress address = InetAddress.getLocalHost();  
  2. System.out.println("主机名:" + address.getHostName() + ", ip地址:"  
  3.         + address.getHostAddress());  
  4. InetAddress add = InetAddress.getByName("BOPZKQZ9SSY5ECY");  
  5. System.out.println(add.getHostAddress());  



[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. final Socket socket = new Socket();  
  2. SocketAddress address = new InetSocketAddress("www.fortify.net"443);  
  3. try {  
  4.     socket.connect(address);  
  5. catch (IOException e) {  
  6.     // TODO Auto-generated catch block  
  7.     e.printStackTrace();  
  8. }// 连接远程主机  
  9. Thread reader = new Thread() {  
  10.     @Override  
  11.     public void run() {  
  12.         try {  
  13.             byte[] buffer = new byte[512];  
  14.             InputStream stream = socket.getInputStream();  
  15.             socket.getInputStream().read(buffer);  
  16.         } catch (Exception ex) {  
  17.   
  18.         }  
  19.     }  
  20. };  
  21. reader.start();  





三、两者区别

关键就是 InetSocketAddress不基于任何协议,一般用于socket编程中。
<span style="font-size: 18px;">表面看<span style="font-family: SimSun;">InetSocketAddress多了一个端口号</span>,端口的作用:一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。</span>
<span style="font-size: 18px;">那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。</span>
<span style="font-size: 18px;">实际上是通过“IP地址+端口号”来区分不同的服务的。</span>

==========================================================
转自:http://blog.csdn.net/lskshz/article/details/25406915
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值