目录
一.网络编程
1.1 什么是网络编程
1.2 网络通信基本模式
常见的通信模式有如下二种形式:
1.Client-Service(CS)
2.Browser/Service(BS)
1.3 网络通信三要素
- IP地址:设备在网络中的地址,是唯一的标识。
- 端口:应用程序在设备中的唯一标识。
- 协议:数据在网络中传输的规则。常见的协议有TCP协议和UDP协议。
1.4 IP地址
1.4.1 什么是IP地址
IP全称互联网协议地址,是分配给上网设备的唯一标识。
1.4.2 IP的分类
IP分为IPv4和IPv6。
IPv4
总共4个字节,也就是32个位。IPv4分成4个整数,每个整数用十进制位表示, 数之间用点 . 分隔。
总共16个字节,也就是128位,号称可以为地球每一粒沙子编号。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.7 协议
1.7.1 什么是协议
协议是对等层实体在通信过程中应该遵守的规则的集合,这些规则包括报文的格式和顺序、报文发送后或接收后对等层实体所采取的动作等。
1.7.2 网络协议的参考模型
- OSI参考模型:世界互联协议标准,全球通信规范,由于此模型过于理想化,未能在因特网上进行广泛推广。
- TCP/IP参考模型:事实上的国际标准。
1.7.3 传输层的二个常见协议
- TCP(Transmission Control Protocol) :传输控制协议
- UDP(User Datagram Protocol):用户数据报协议
二.UDP通信
2.1 UDP协议的特点
- UDP是一种无连接、不可靠传输的协议。
- 将数据源IP、目的地IP和端口封装成数据包,不需要建立连接
- 每个数据包的大小限制在64KB内
- 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
- 可以广播发送 ,发送数据结束时无需释放资源,开销小,速度快。
2.2 UDP协议通信场景
语音通话,视频会话等。
2.3 UDP套接字编程所涉及到的API
2.3.1 DatagramSocket
DatagramSocket是用来创建发送端和接收端的对象
构造器
常用API
2.3.2 DatagramPacket
DatagramPacket:数据包对象
构造器
常用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 广播
1.什么是广播
当前主机与所在网络中的所有主机通信
2.UDP如何实现广播
使用广播地址:255.255.255.255
具体操作:
- 发送端发送的数据包的目的地写的是广播地址、且指定端口。 (255.255.255.255 , 9999)
- 本机所在网段的其他主机的程序只要注册对应端口就可以收到消息了。(9999)
2.6.3 组播
1.什么是组播
当前主机与选定的一组主机的通信。
2.UDP如何实现组播
使用组播地址:224.0.0.0 ~ 239.255.255.255
具体操作:
- 发送端的数据包的目的地是组播IP (例如:224.0.1.1, 端口:9999)
- 接收端必须绑定该组播IP(224.0.1.1),端口还要注册发送端的目的端口9999 ,这样即可接收该组播消息。
- DatagramSocket的子类MulticastSocket可以在接收端绑定组播IP。