‘壹’ java中InetAddress的getAddress和getHostAddress有什么区别
getHostAddress为byte数组,getAddress是个String字符串。
所以,getAddress方便展示,getHostAddress方便作为数据进行处理。
‘贰’ 请教Java Socket高人一个InetAddress类型的具体用法的含义是什么
public static InetAddress getLocalHost()
throws UnknownHostException
Returns the address of the local host. This is achieved by retrieving
the name of the host from the system, then resolving that name into
an InetAddress.
Note: The resolved address may be cached for a short period of time.
If there is a security manager, its
checkConnect method is called
with the local host name and -1
as its arguments to see if the operation is allowed.
If the operation is not allowed, an InetAddress representing
the loopback address is returned.
Returns:
the address of the local host.
Throws:
UnknownHostException - if the local host name could not
be resolved into an address.
错误的原因,把鼠标移到红线,会提示
‘叁’ java 怎么根据IP地址获取主机名
//看看这个代码如何。
importjava.net.InetAddress;
importjava.net.UnknownHostException;
importjava.util.Properties;
importjava.util.Set;
{
publicstaticvoidmain(String[]args){
InetAddressnetAddress=getInetAddress();
System.out.println("hostip:"+getHostIp(netAddress));
System.out.println("hostname:"+getHostName(netAddress));
Propertiesproperties=System.getProperties();
Set<String>set=properties.stringPropertyNames();//获取java虚拟机和系统的信息。
for(Stringname:set){
System.out.println(name+":"+properties.getProperty(name));
}
}
(){
try{
returnInetAddress.getLocalHost();
}catch(UnknownHostExceptione){
System.out.println("unknownhost!");
}
returnnull;
}
publicstaticStringgetHostIp(InetAddressnetAddress){
if(null==netAddress){
returnnull;
}
Stringip=netAddress.getHostAddress();//gettheipaddress
returnip;
}
publicstaticStringgetHostName(InetAddressnetAddress){
if(null==netAddress){
returnnull;
}
Stringname=netAddress.getHostName();//getthehostaddress
returnname;
}
}
这个代码简单明了,就是调用现成的InetAddress类
‘肆’ inetaddress inetsocketaddress socketaddressd三个是什么关系
InetAddress是Java对IP地址的封装,代表互联网协议(IP)地址;
InetAddress对象的获取只能通过静态方法,比如根据主机名获取主机的ip地址封装对象:
InetAddress add=InetAddress.getByName("BOPZKQZ9SSY5ECY");
InetSocketAddress是SocketAddress的实现子类。
此类实现 IP 套接字地址(IP 地址 + 端口号),不依赖任何协议。
在使用Socket来连接服务器时最简单的方式就是直接使用IP和端口,但Socket类中的connect方法并未提供这种方式,而是使用SocketAddress类来向connect方法传递服务器的IP和端口。
SocketAddress只是个抽象类,它除了有一个默认的构造方法外,其它的方法都是abstract的,因此,我们必须使用SocketAddress的子类来建立SocketAddress对象,也就是唯一的子类InetSocketAddress
关键就是InetSocketAddress不基于任何协议,一般用于socket编程中。表面看InetSocketAddress多了一个端口号,端口的作用:一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。
那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。
实际上是通过“IP地址+端口号”来区分不同的服务的。