目录
一.网络编程
1.1 什么是网络编程
1.2 网络通信基本模式
1.3 网络通信三要素
1.4 IP地址
1.4.1 什么是IP地址
1.4.2 IP的常见分类
1.4.3 IP地址基本寻路
1.4.4 IP地址形式
1.4.5 IP常用命令(在命令提示符窗口中使用)
1.4.6 特殊IP地址
1.5 IP地址操作类-InetAddress
1.6 端口
1.6.1 什么是端口号
1.6.2 端口类型
1.6.3 注意事项
1.7 协议
1.7.1 什么是通信协议
1.7.2 网络通信协议的参考模型
1.7.3 传输层的二个常见协议
1.9 TCP协议
1.9.1 TCP协议特点
二.UDP通信
2.1 UDP协议的特点
2.2 UDP协议通信场景
2.2 UDP通信模型演示
2.3 DatagramSocket
2.4 DatagramPacket
2.5 案例
2.6 UDP的通信方式
2.6.1 单播
2.6.2 广播
2.6.3 组播
2.6.4 UDP如何实现广播
2.6.5 UDP如何实现组播
一.网络编程
1.1 什么是网络编程
网络编程可以让程序与网络上的其他设备中的程序进行数据交互。
1.2 网络通信基本模式
常见的通信模式有如下二种形式:
1.Client-Service(CS)
2.Browser/Service(BS)
1.3 网络通信三要素
1.IP地址:设备在网络中的地址,是唯一的标识。
2.端口:应用程序在设备中的唯一标识。
3.协议:数据在网络中传输的规则。常见的协议有TCP协议和UDP协议。
1.4 IP地址
1.4.1 什么是IP地址
IP全称互联网协议地址,是分配给上网设备的唯一标志。
1.4.2 IP的常见分类
IPv4和IPv6。
IPv4:32位(4个字节)。
IPv4分成4个整数,每个整数用十进制位表示, 数之间用点.分开。
IPv6:128位(16个字节),号称可以为地球每一粒沙子编号。
IPv6分成8个整数,每个整数用四个十六进制位表示, 数之间用冒号(:)分开。
1.4.3 IP地址基本寻路
1.4.4 IP地址形式
公网地址、和私有地址
(
局域网使用
)
。
192.168.
开头的就是常见的局域网地址,范围即为
192.168.0.0--192.168.255.255
,专门为组织机构内部使用
1.4.5 IP常用命令(在命令提示符窗口中使用)
ipconfig:查看本机IP地址。
ping IP地址(或域名):检查网络是否畅通。
1.4.6 特殊IP地址
127.0.0.1或者localhost,称为回送地址或本地回环地址,只会寻找当前所在本机。
1.5 IP地址操作类-InetAddress
此类表示Internet(IP)协议地址。
相关API:
1.6 端口
1.6.1 什么是端口号
标识正在计算机设备上运行的进程(程序),被规定为一个16位的二进制,范围是0—65535。
1.6.2 端口类型
周知端口:0—1023,被预先定义的知名应用占用。
注册端口:1024—49151.分配给用户进程或某些应用程序(如Tomcat占用8080,MySQL占用3306)。
动态端口:49152—65535,之所以称为动态端口,是因为它一般不固定分配某种进程,而是动态分配。
1.6.3 注意事项
我们自己开发的程序选择注册端口,且一个设备中不能出现二个程序的端口号一样,否则出错。
1.7 协议
1.7.1 什么是通信协议
连接和通信数据的规则被称为网络通信协议。
1.7.2 网络通信协议的参考模型
OSI
参考模型:世界互联协议标准,全球通信规范,由于此模型过于理想化,未能在因特网上进行广泛推广。
TCP/IP
参考模型
(
或
TCP/IP
协议
)
:事实上的国际标准。
1.7.3 传输层的二个常见协议
TCP(Transmission Control Protocol)
:传输控制协议
UDP(User Datagram Protocol)
:用户数据报协议
1.9 TCP协议
1.9.1 TCP协议特点
1. 使用TCP协议,必须双方先建立连接,他是一种面向连接的可靠通信协议。
2. 传输前,采用“三次握手”方式建立连接,所以是可靠的。
3. 再连接中可进行大数据量的传输。
4. 连接、发送数据都需要确认、且传输完毕后,还需释放已建立的连接,通信效率较低。
二.UDP通信
2.1 UDP协议的特点
1. UDP
是一种
无连接
、
不可靠传输
的协议。
2. 将数据源
IP
、目的地
IP
和端口封装成数据包,不需要建立连接
3. 每个数据包的大小限制在
64KB
内
4. 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
5. 可以广播发送 ,发送数据结束时无需释放资源,开销小,速度快。
2.2 UDP协议通信场景
语音通话,视频会话等。
2.2 UDP通信模型演示
2.3 DatagramSocket
DatagramSocket是用来创建发送端和接收端的对象(相当于上面模型中的人)
1.构造器
2.常用API
2.4 DatagramPacket
DatagramPacket:数据包对象(相当于韭菜盘子)
1.构造器
2.常用API
2.5 案例
1.使用UDP通信实现发送消息和接收消息
第二个案例的简化版
2.使用UDP通信实现多发多收消息
客户端步骤:
①
创建
DatagramSocket
对象(发送端对象)
扔韭菜的人
②使用
while
死循环不断的接收用户的数据输入,如果用户输入的
exit
则退出程序
③如果用户输入的不是
exit,
把数据封装成
DatagramPacket
韭菜盘子
④使用
DatagramSocket
对象的
send
方法将数据包对象进行发送
开始抛出韭菜
⑤释放资源
客户端代码:
接收端步骤:
①创建
DatagramSocket
对象并指定端口(接收端对象)
接韭菜的人
②创建
DatagramPacket
对象接收数据(数据包对象)
韭菜盘子
③使用
while
死循环不断的进行第
4
步
④使用
DatagramSocket
对象的
receive
方法传入
DatagramPacket
对象
开始接收韭菜
接收端代码:
2.6 UDP的通信方式
2.6.1 单播
单台主机与单台主机之间的通信。
2.6.2 广播
当前主机与所在网络中的所有主机通信
2.6.3 组播
当前主机与选定的一组主机的通信。
2.6.4 UDP如何实现广播
使用广播地址:
255.255.255.255
具体操作:
1. 发送端发送的数据包的目的地写的是广播地址、且指定端口。 (255.255.255.255 , 9999)
2. 本机所在网段的其他主机的程序只要注册对应端口就可以收到消息了。(9999)
2.6.5 UDP如何实现组播
使用组播地址:224.0.0.0 ~ 239.255.255.255
具体操作:
1. 发送端的数据包的目的地是组播IP (例如:224.0.1.1, 端口:9999)
2. 接收端必须绑定该组播IP(224.0.1.1),端口还要注册发送端的目的端口9999 ,这样即可接收该组播消息。
3. DatagramSocket的子类MulticastSocket可以在接收端绑定组播IP。