-
Java连载124-网络编程
一、计算机网络基础
1.网络通信协议有很多种,目前应用最广泛的就是TCP/IP协议(Transmission Control Protocal/Internet Protocal,传输控制协议/英特网互联协议),UDP(User Datagram Protocal,用户数据报协议),ICMP(Internet Control Message Protocal,英特网络控制报文协议)和一些其他协议族。
2.基于TCP/IP的模型分成四个层次:
(1)应用层;如:HTTP\FTP\DNS
(2)传输层;如:TCP\IP
(3)网络层;如:IP\ICMP\IGMP
(4)链路层。如:驱动程序,接口
3.具体功能如下:
(1)链路层也称为网络接口层,该层负责监视数据在主机和网络之间的交换。事实上,TCP\IP本身并未定义该协议,而是由参与互连的各网络使用自己的物理层和数据链路层协议与TCP\IP模型的网络层进行连接;
(2)网络层也称为网络互联层,是整个TCP\IP的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络;
(3)传输层主要使网络程序进行通信,在进行网络通信时,可以采用TCP也可以采用UDP.
(4)应用层主要负责应用程序的协议,如HTTP\FTP
4.IP地址主要由两部分组成“网络.主机",IPv4使用4个字节构成,而IPv6使用16个字节构成
5.IP地址主要分为五类,常见的有三类
A类地址:由第一段的网络地址和其余三段主机地址组成,范围为:1.0.0.0~127.255.255.255
B类地址:由前两段的网络地址和其余两段的主机地址组成,范围为:
128.0.0.0~191.255.255.255
C类地址:由前三段的网络地址和其余一段的主机地址组成,范围为:
192.0.0.0~223.255.255.255
另外还有一个回送地址127.0.0.1,指的是本机地址,该地址一般用于测试,例如执行ping 127.0.0.1用来测试本机TCP\IP是否正常
6.端口号有两个字节表示,范围0~65535,其中0~1023的端口号由操作系统的网络服务所占用,用户普通的应用程序要是使用1024以上的端口号,防止端口号被另一个应用程序占用。
二、InetAddress
1.JDK中提供了一个与IP地址相关的InetAddress类,该类用于封装一个IP地址,并且提供了一系列与IP地址相关的方法,
方法 |
说明 |
InetAddress getByName(String host) |
参数host表示指定的主机,该方法用于在给定主机名的情况下确定主机IP地址。 |
InetAddress getLocalHost() |
静态方法,创建一个表示本地主机的InetAddress对象 |
String getHostName() |
得到IP地址的主机名,如果是本机则是计算机名,如果不是本机则是主机名,如果没有域名则是IP地址。 |
boolean isReadchable(int timeout) |
判断在指定时间内地址是否可以到达 |
String getHostAddress() |
成员方法,得到字符串格式的原始IP地址 |
前两个方法用于获取该类的实例对象,第一个方法用于获得表示指定主机的InetAddress对象,第二个方法用于获得表示本机的InetAddress对象,通过InetAddress对象便可以获取指定主机名,IP地址等。接下来演示一个案例
package com.bjpowernode.java_learning; import java.net.InetAddress; public class D124_InetAddressMethod { public static void main(String[] args) throws Exception{ InetAddress localAddress = InetAddress.getLocalHost(); InetAddress remoteAddress = InetAddress.getByName("www.baidu.com"); System.out.println("本机的IP地址:"+localAddress.getHostAddress()); System.out.println("baidu的IP地址:"+remoteAddress.getHostAddress()); System.out.println("3s是否可以达到:"+remoteAddress.isReachable(3000)); System.out.println("baidu的主机名为:"+remoteAddress.getHostName()); } }
需要值得注意的是,getHostName()方法用于得到某个主机的域名,如果创建的InetAddress对象是用主机名创建的,则将该主机名返回;否则,将根据IP地址反向查找的对应的主机名,如果找到将其返回,否则返回IP地址。
三、源码
D124_InetAddressMethod.java
https://github.com/ruigege66/Java/blob/master/D124_InetAddressMethod.java
出 处:https://www.cnblogs.com/ruigege0000/p/13179945.html