在Java中InetAddress和InetSocketAddress看起来很相似,用来描述IP地址和主机名称。当然,它们也支持使用常规方法来检查地址:回环地址、本地地址、组播地址;基本的返回方法:获得IP,获得主机名称等。
重要的是InetSocketAddress包含InetAddress。这意味着,如果我们想对InetSocketAddress中的InetAddress做任何操作,只需要通过getInetAddress()方法获得即可。
对照表
属性 | InetAddress | InetSocketAddress |
描述对象 | IP地址 | Socket地址(IP地址+端口) |
描述 | IP和主机对象名称 | IP和主机的对象名称,并包括端口号 |
解决问题 | IP到主机名称,主机名称到IP | IP到主机名称,主机名称到IP,可以包含端口 |
获取对象 | InetAddress.getLocalhost(); InetAddress.getByName(String); InetAddress.getByAddress(String); |
InetSocketAddress.createUnresolved(String, port); |
代码示例
public class hotdream { public static void main(String args[]){ byte[] b = new byte[] {(byte)192,(byte)168,(byte)1,(byte)1}; try { InetAddress add = InetAddress.getByAddress(b); System.out.println(add.toString()); add = InetAddress.getByName("localhost"); System.out.println(add.toString()); InetSocketAddress addsock = InetSocketAddress.createUnresolved( "localhost", 90); System.out.println(addsock.toString()); }catch(Exception e) { } } }
原文连接
https://commitflame.wordpress.com/2010/12/22/comparing-inetaddress-and-inetsocketaddress-in-java/