[疯狂Java]网络:IP地址和端口号
来源:互联网 发布:ar java技术实现 编辑:程序博客网 时间:2024/06/05 21:10
1. IP地址和端口号:
1) IP地址用于在网络中唯一标识一台机器(通信实体),是一个32位整数,通常用4个0-255的十进制数标识;
2) 端口号用于唯一标识通信实体上进行网络通讯的程序,同一台机器上不能用有两个程序占用同一个端口:
i. 端口号是一个16位整数,共有3类;
ii. 公认端口:0-1023,它们紧密绑定一些特定的服务(比如TCP/IP通信协议程序的端口);
iii. 注册端口:1024-49151,它们松散绑定一些特定服务,其余可以随意使用,应用程序用的最多端口号来自于这个范围;
iv. 动态/私有端口:49152-65535,这些端口一般是应用程序运行时临时地、动态地占用,可以说是一种竞争资源吧,应用程序本身不会和这些端口绑定,一般会将其作为资源利用;
3) 也就是说真正参与网络通信的对象是计算机上的程序(网络通信程序),IP地址是它的街道门牌,而端口是它的房间号;
2. Java的IP地址类:
1) InetAdress是Java的IP地址类,它的对象就代表一个IP地址,它有两个重要的子类,一个是Inet4Adress,另一个是Inet6Adress,分别表示IPv4和IPv6地址,IPv6地址有64位,是下一代互联网的主打;
2) 创建InetAdress对象:Java并没有为其提供构造器,而是使用静态方法来构造InetAdress对象;
i. static InetAddress getByName(String host); // 根据主机名创建对象,主机名就是英文字母地址,比如"www.xxx.com"之类的
ii. static InetAddress getByAddress(byte[] addr); // 根据4字节地址创建对象,比如new byte[] {192, 168, 10, 1}之类的
iii. static InetAddress getLocalHost(); // 直接获取本机IP地址并创建对象(即本机接入互联网的IP地址,不是本地回环地址127.0.0.1)
3) 查询地址信息:调用InetAdress的对象方法获取和地址有关的信息
i. String getHostName(); // 获取主机英文字符名,即"www.xxx.com"之类的
ii. String getHostAddress(); // 获取主机4位十进制数地址(以字符串形式返回),比如"192.168.10.2",注意是字符串,不是byte[]
iii. String getCanonicalHostName(); // 获取主机的全限定域名(FQDN,Fully-Qualified-Domain-Name)
4) 检查地址是否可达:调用InetAdress的isReachable方法
i. boolean isReachable(int timeout);
ii. 内部调用ping命令查看是否可达;
iii. timeout是限时,如果超过该限时还未响应就直接判定为不可达,时间单位是毫秒;
iv. 注意:该方法会尽一切可能和目标建立通信,如果设置了防火墙之类的可能会阻塞该方法而返回false;
5) 示例:
public class Test {private final static String baidu = "www.baidu.com";private final static byte[] local = new byte[] {127, 0, 0, 1};private static void print(InetAddress ip) throws IOException {System.out.println("Host Adress: " + ip.getHostAddress());System.out.println("Host Name: " + ip.getHostName());System.out.println("Canonical Host Name: " + ip.getCanonicalHostName());}public static void main(String[] args) throws IOException {InetAddress ip = InetAddress.getByName(baidu);print(ip);ip = InetAddress.getByAddress(local);print(ip);ip = InetAddress.getLocalHost();print(ip);}}
- [疯狂Java]网络:IP地址和端口号
- Java网络编程:ip地址和端口
- IP地址和端口号
- IP地址和端口
- IP地址和端口
- TCP/IP网络编程 学习笔记_3 --给套接字分配IP地址和端口号
- Java基础-网络编程之IP和端口号
- 理解IP地址和端口号
- 理解IP地址和端口号
- 理解IP地址和端口号
- 理解IP地址和端口号
- 理解IP地址和端口号
- IP地址和端口号详细解析
- 理解IP地址和端口号
- 理解IP地址和端口号
- 理解IP地址和端口号
- 理解ip地址和端口号
- AdvancedInstaller设置IP地址和端口号
- uva 11520 - Fill the Square - D 填方块 贪心
- wpa_supplicant-0.8 state machine
- D14
- How to prepare tech interview
- size_t类型
- [疯狂Java]网络:IP地址和端口号
- C# 图片添加旋转字体文字,实现图片装逼功能
- IPython
- 经典算法整理之归并排序
- 详细解读LruCache类
- [LeetCode][数论]Excel Sheet Column Number
- 输入输出操作符重载
- 杂谈
- 在linux下解压常见软件,并添加环境变量;定制linux系统服务