基于udp协议的编程模型
编程模型
接收方:
(1)创建 DatagramSocket类型的对象并提供端口号;
(2)创建DatagramPacket类型的对象用于接收数据并记录;
(3)调用receive()方法接收数据内容;
(4)关闭Socket;
发送方:
(1)创建DatagramSocket类型的对象;
(2)创建DatagramPacket类型的对象并提供接收方的通信地址和端口号;
(3)调用send()方法发送数据内容;
(4)关闭Socket;
相关类和方法的解析
DatagramSocket类
java.net.DatagramSocket
类用于描述发送/接收数据的套接字(码头)
DatagramSocket()
- 使用无参方式构造对象
DatagramSocket(int port)
- 根据参数指定端口构造对象
void receive(DatagramPacket p)
- 用于接收数据并记录到参数指定的数据报中
void send(DatagramPacket p)
- 用于发送参数指定的数据报内容
void close()
DatagramPacket类
java.net.DatagramPacket
类用于描述发送/接收的数据报(集装箱)
DatagramPacket(byte[] buf, int length)
- 用于接收数据报到参数中记录
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
- 用于将参数指定的内容发送到参数指定的位置
InetAddress getAddress()
- 用于获取发送方/接收方的通信地址
int getPort()
- 用于获取发送方/接收方的端口号
int getLength()
- 用于获取发送/接收到的数据长度
InetAddress类
java.net.InetAddress
类用于描述通信地址信息
static InetAddress getLocalHost()
- 用于获取本地主机的通信地址
static InetAddress getByName(String host)
- 用于获取指定主机的通信地址
tcp协议和udp协议的比较
tcp协议
- 传输控制协议,是一种面向连接的协议,类似于打电话
- 建立连接 => 进行通信 => 断开连接
- 在通信的整个过程中全程保持连接
- 该协议保证了数据传输的可靠性和有序性
- 是一种全双工的字节流通信方式
- 服务器压力比较大,资源消耗比较多,并且发送数据的效率相对比较低
udp协议
- 用户数据报协议,是一种非面向连接的协议,类似于写信
- 在通信的整个过程中不保持连接
- 不保证数据传输的可靠性和有序性
- 是一种全双工的数据报通信方式
- 服务器压力比较小,资源消耗比较少,并且发送数据的效率相对比较高
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!