InetAddress类的意义及用法。
一、代码实现
写一个Demo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package javanet; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Arrays; public class testinetaddress { public static void main(String[] args) { // 没有实例new,直接用方法 try { InetAddress address = InetAddress.getLocalHost(); System.out.println("计算机名:"+address.getHostName()); System.out.println("当前ip地址:"+address.getHostAddress()); // 获取字节数组形式的ip地址 byte[] bytes = address.getAddress(); System.out.println("字节数组形式的ip:"+Arrays.toString(bytes)); System.out.println("直接输出inetaddress:"+address); System.out.println("//////////////////////"); // 根据主机名获取inetaddress实例 InetAddress address2 = InetAddress.getByName("USER-20150703ZH"); System.out.println("计算机名:"+address2.getHostName()); System.out.println("当前ip地址:"+address2.getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); } } } |
输出结果为:
1 2 3 4 5 6 7 |
计算机名:USER-20150703ZH 当前ip地址:172.30.3.61 字节数组形式的ip:[-84, 30, 3, 61] 直接输出inetaddress:USER-20150703ZH/172.30.3.61 ////////////////////// 计算机名:USER-20150703ZH 当前ip地址:172.30.3.61 |
也可以获取其他主机的信息。比如聊天服务器,常常要获取双方的聊天主机信息,那就用socket操作。
简单修改一下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public static void startserver() { try { ServerSocket serverSocket = new ServerSocket(12345); System.out.println("服务器已启动,等待连接..."); while (true) { Socket socket = serverSocket.accept(); loginthread login = new loginthread(socket); login.start(); count++; System.out.println("当前在线用户量为:"+count); InetAddress inetAddress = socket.getInetAddress(); System.out.println("当前的用户名为:"+inetAddress.getHostName()); System.out.println("当前的用户ip地址为:"+inetAddress.getHostAddress()); } } catch (IOException e) { e.printStackTrace(); } } |
二、总结
简单实践。