网络编程
Ip地址和端口号
ip地址:用于唯一标识网络中的一个通讯实体,如电脑,手机等
是一个32位数,为方便记忆通常将其分为4个8位的二进制数据,每位用.隔开每个8位数可以转换成一个0~255的十进制整数
因此通常为“202.103.24.68”的形式;
端口号:ip用于唯一标识网络中的一个通讯实体,但一个通讯实体可以有多个通信程序同时提供网络服务,因此需要端口。
16位整数,表示数据交给计算机中哪个的通讯程序(微信,lol等),不同的应用处理不同端口上的数据,同一台计算机上不
能有两个程序使用同一个端口,端口号0~65535
InetAddress类
package networkProgramming; import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressSimple { public static void main(String[] args) { try { InetAddress ip = InetAddress.getByName("www.sina.com"); String ipStr = ip.getHostAddress(); System.out.println("新浪网地址:"+ipStr); String hostName = ip.getHostName(); System.out.println("新浪网主机:"+hostName); InetAddress localHost = InetAddress.getLocalHost(); System.out.println(localHost.getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); } } }
获取本机的ip地址,并根据本机的ip地址获取主机名称和域名
package networkProgramming; import java.net.InetAddress; import java.net.UnknownHostException; public class GetHostNameByIpAddress { public static void main(String[] args) { String hostAddress = null; try { InetAddress localHost = InetAddress.getLocalHost(); hostAddress = localHost.getHostAddress(); } catch (Exception e) { e.printStackTrace(); } String ipAddress =hostAddress ; String[] ipArr = ipAddress.split("\\."); byte[] ipByteArr = new byte[ipArr.length]; for (int i = 0; i < ipArr.length; i++) { int m = Integer.parseInt(ipArr[i]); ipByteArr[i]=(byte) m; } try { InetAddress inetAddress = InetAddress.getByAddress(ipByteArr); System.out.println("本机的ip地址"+inetAddress.getHostAddress()); String canonicalHostName = inetAddress.getCanonicalHostName(); System.out.println("本机的域名:"+canonicalHostName); String hostName = inetAddress.getHostName(); System.out.println("本机的主机名称:"+hostName); }catch (UnknownHostException e){ e.printStackTrace(); } } }