基于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协议

  • 用户数据报协议,是一种非面向连接的协议,类似于写信
  • 在通信的整个过程中不保持连接
  • 不保证数据传输的可靠性和有序性
  • 是一种全双工的数据报通信方式
  • 服务器压力比较小,资源消耗比较少,并且发送数据的效率相对比较高


10月      Java

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!