食用前说明:
本文章内容来自B站韩顺平老师的课堂笔记,本人只是将其进行自我整理,内容有所删减,韩顺平老师的B站课程AV号:BV1fh411y7R8
本文章内容来自韩顺平老师的课堂笔记的 第21章 网络编程。
21.1 网络的相关概念
概念 | 作用 | |
---|---|---|
网络通信 | 两台设备之间通过网络实现数据传输 | 1. 将数据通过网络从一台设备传输到另一台设备 |
-
在 java.net 包下提供了一系列的类或接口,供程序员使用,完成网络通信
概念 作用 网络 两台或多台设备通过一定物理设备连接起来构成了网络 根据网络的覆盖范围不同,对网络进行分类:局域网、城域网 (一个城市)、广域网 (例:万维网,互联网) ip地址 用于唯一标识网络中的每台计算机/主机 1. 查看ip地址:ipconfig -
ip地址的表示形式:点分十进制 XX.XX.XX.XX
-
每个十进制数的范围:0~255
-
ip地址的组成 = 网络地址 + 主机地址,比如:192.168.16.69
-
IPv6 是互联网工程任务组设计的用于替代 IPv4 的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址
-
由于 IPv4 最大的问题在于网络地址资源有限,严重制约了互联网的应用和发展。IPv6 的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。特殊的127.0.0.1 表示本机地址
概念 作用 域名 将ip地址映射成域名,怎么映射上,通过HTTP协议 好处:为了方便记忆,解决记ip的困难 端口号 用于标识计算机上某个特定的网络程序 1. 表示形式:以整数形式,端口范围0~65535 [2个字节表示端口 0~2^16-1] -
0~1024已经被占用,比如 ssh 22,ftp 21,smtp 25 http 80
-
常见的网络程序端口号:
tomcat :8080
mysql :3306
oracle :1521
sqlserver :1433
-
网络通信协议 协议(tcp/ip) TCP/IP (Transmission Control Protocol / Internet ProtocoI)的简写,中文名为 ”传输控制协议 / 因特网互联协议“,又叫网络通讯协议, 这个协议是 Internet 最基本的协议、Internet 国际互联网络的基础,简单地说,就是由网络层的 IP协议和传输层的 TCP协议组成的。 TCP协议 传输控制协议 TCP协议 -
使用 TCP协议前,须先建立TCP连接,形成传输数据通道
-
传输前,采用 "三次握手" 方式,是可靠的
-
TCP协议进行通信的两个应用进程:客户端、服务端
-
在连接中可进行大数据量的传输
-
传输完毕,需释放已建立的连接,效率低
-
将数据、源、目的封装成数据包,不需要建立连接
-
每个数据报的大小限制在64K内, 不适合传输大量数据
-
因无需连接,故是不可靠的
-
发送数据结束时无需释放资 (因为不是面向连接的),速度快
21.1.1 网络通信协议模型分层
OSI模型 | TCP/IP模型 | TCP/IP模型各层对应协议 |
---|---|---|
应用层 | ||
表示层 | ||
会话层 | 应用层 | HTTP、ftp、telnet、DNS... |
传输层 | 传输层(TCP) | TCP、UDP、... |
网络层 | 网络层(IP) | IP、ICMP、ARP... |
数据链路层 | ||
物理层 | 物理 + 数据链路层 | Link |
21.2 InetAddress 类
21.2.1 相关方法
功能 | |
---|---|
getLocalHost | 获取本机 InetAddress 对象 |
getByName | 根据指定主机名/域名获取 ip地址对象 |
getHostName | 获取 InetAddress 对象的主机名 |
getHostAddress | 获取 InetAddress 对象的地址 |
21.3 Socket
21.3.1 基本介绍
套接字 (Socket) 开发网络应用程序被广泛采用,以至于成为事实上的标准。
通信的两端都要有 Socket ,是两台机器间通信的端点
网络通信其实就是 Socket 间的通信。
Socket 允许程序把网络连接当成一个流,数据在两个 Socket 间通过 IO 传输
一般主动发起通信的应用程序属客户端,等待通信请求的为服务端
-
示意图
21.4 TCP 网络通信编程
21.4.1 基本介绍
基于客户端 —— 服务端的网络通信
底层使用的是 TCP/IP 协议
应用场景举例:客户端发送数据,服务端接受并显示控制台
基于 Socket 的 TCP 编程
21.4.2 netstat 指令
netstat -an 可以查看当前主机网络情况,包括端口监听情况和网络连接情况
netstat -an | more 可以分页显示
要求在 dos 控制台下执行 win + r
说明:
(1) Listening 表示某个端口在监听
(2) 如果有一个外部程序 (客户端) 连接到该端口,就会显示一条连接信息
(3) 可以输入 ctrl + c 退出指令
21.5 UDP 网络通信编程 [了解]
21.5.1 基本介绍
类 DatagramSocket 和 DatagramPacket [数据/数据报] 实现了基于 UDP 协议网络程序。
UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证 UDP 数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。
DatagramPacket 对象封装了 UDP 数据报,在数据报中包含了发送端的 IP 地址 和 端口号 以及接收端的 IP 地址 和 端口号。
UDP 协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接
21.5.2 基本流程
核心的两个类/对象 DatagramSocket 与 DatagramOacket
建立发送端,接收端 (没有服务端和客户端概念)
发送数据前,建立数据包/报 DatagramPacket 对象
调用 DatagramSocket 的发送、接收方法
关闭 DatagramSocket