下面内容是Java开发内容的高级知识点,需要对Java中的面向对象、IO、多线程、以及网络相关知识有一定的基础。(知识永远都有深度,本章节长期更新内容)
1、网络基础知识
网络通信的条件:1、两个通信的端都要有各自的IP地址作为唯一标识,简单的来说IP地址用来区分不同机器(计算机)。2、语言要相通。3、如何辨别不同程序的通信需要端口号来区别,简单的来说端口号就是用来标识不同的应用程序。
TCP/IP是目前世界上使用最广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也称TCP/IP协议族 或 TCP/IP 协议栈。
TCP:Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议
TCP/IP模型
>>IP和端口<<
1、用于区分不同应用程序。
2、端口号范围为0~65535,其中0~1023为系统所保留。如果自定义端口号,所以建议用1024之后的端口号。
3、IP地址和端口号组成了所谓的Socket,Socket是网络上运行程序之间双向通信链路的终结点,是TCP和UDP的基础。
常用的端口号需要记一下:http:80 ftp:21 telnet:23
——————————Java中的网络支持—————————
针对网络通信的不同层次,Java提供的网络功能有四大类:
>>1、InetAddress:用于标识网络上的硬件资源
>>2、URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据
>>3、Socket:使用TCP协议实现网络通信的Socket相关的类。
>>4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。
2、InetAddress类
查看I-net-Address的API文档,发现没有构造方法,也就是不能通过new来创建。所以肯定有静态的方法来创建。
1 import java.net.InetAddress; 2 import java.net.UnknownHostException; 3 import java.util.Arrays; 4 5 public class Test1{ 6 public static void main(String[] args) throws UnknownHostException{ 7 // 获取本机的InetAdresss实例 8 InetAddress address = InetAddress.getLocalHost(); 9 System.out.println("计算机名:"+address.getHostName()+"\nIP地址:"+address.getHostAddress()); 10 11 // 获取字节数组形式的IP地址 12 byte[] bytes = address.getAddress(); 13 System.out.println("字节数组形式的IP:"+Arrays.toString(bytes)); 14 System.out.println(address); 15 16 // 也可以通过机器名来获取InewAdress 17 InetAddress address2 = InetAddress.getByName("MacBook-Air-2.local"); 18 System.out.println("通过计算机名字创建的InetAddress对象:"+address2); 19 System.out.println("计算机名:"+address2.getHostName()); 20 System.out.println("IP地址:"+address2.getHostAddress()); 21 22 // 也可以通过IP地址来获取InewAdress 23 InetAddress address3 = InetAddress.getByName("192.168.1.102"); 24 System.out.println("通过计算机IP地址创建的InetAddress对象:"+address3); 25 System.out.println("计算机名:"+address3.getHostName()); 26 System.out.println("IP地址:"+address3.getHostAddress()); 27 28 29 } 30 }
输出结果:
3、URL
URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址。 俗称就是网址。
URL由两部分组成:协议名称+资源名称。
在Java.net包中,提供了URL类来表示URL。
4、TCP编程
5、UDP编程