今天开始正式进入Java网络编程(Socket编程)的学习,Socket编程在Java中属于比较重要的一个环节,涉及到计算机网络知识。
由于没怎么学习过计算机网络,而且我的专业也没有开设这个课程,所以只能自己慢慢找相关的文章学一学。
像TCP/IP,Http协议都是必须要懂的内容。
从今天开始,会一步步记录Java网络编程的学习过程。加油~
(一) 概念 :
1. IP地址 : IP地址是给每个连接在因特网上的主机(或者路由器)分配一个在全世界范围内唯一的标识符,一个IP地址主要由两部分组成: 网络地址 + 主机地址.
网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配.
IP地址的编制方案有两种:
- IPV4 : 二进制表示,共32位(4个字节) 如: 192.168.3.1
- IPV6: 二进制表示,共 128位(16个字节)
2.端口:IP地址仅仅能够具体标识到某台主机,而端口则表示与计算机的哪个进程通信。
根据IP地址找到是与哪台计算机通信,根据端口号找到是与该机器的哪个进程通信(一个进程可能有多个端口号。),通俗点说, IP地址就像一个公司大楼的地址,端口号就像是办公室的门牌号.这样才能精确的找到想要与之通信的对象。
端口的地址范围是十进制的0~65535
一些我们常用的默认端口号如:
- HTTP : 80
- Tomcat : 8080
- FTP : 21
- MySql : 3306
- Sql Server : 1433
- ...
(二)Java中获取IP的类 : InetAddress
InetAddress类表示 互联网协议 (IP) 地址。先贴上 InetAddress的api链接 : InetAddress.
此类比较特殊,没有构造方法。那怎么使用呢 ?
创建方法 :
- getByName(域名/IP字符串) 在给定主机名的情况下确定主机的 IP 地址
InetAddress ip = InetAddress.getByName("www.baidu.com"); //传入域名
InetAddress ip = InetAddress.getByName("115.239.210.27");//传入IP
复制代码
- getLocalHost() 利用本机IP创建 ,返回本地主机
InetAddress local = InetAddress.getLocalHost(); //返回根据本机IP创建的InetAddress类
复制代码
- getAllByName() 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组
InetAddress[] all = InetAddress.getAllByName("java.sun.com");
复制代码
获得相关信息方法:
- getHostAddress() 返回 IP 地址字符串(以文本表现形式)
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.getHostAddress()); //返回 IP 地址字符串(以文本表现形式)。
复制代码
输出 :
115.239.211.112
复制代码
- getHostName() 获取此 IP 地址的主机名
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.getHostName());//获取此 IP 地址的主机名
复制代码
输出 :
www.baidu.com
复制代码
- isReachable(int timeOut) 测试是否可以达到该地址。实现尽最大努力试图到达主机,timeOut指定在规定时间内是否能连通。
相当于ping功能,测试一下目标地址能否连通。
测试能否在1000ms内连通百度
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.isReachable(1000));
复制代码
输出:
true
复制代码
测试能否在1ms内连接百度 :
InetAddress ip = InetAddress.getByName("www.baidu.com");
System.out.println(ip.isReachable(1));
复制代码
输出 :
false
复制代码
(end~)