编写UDP版本的客户-服务器程序(echo server 和 echo client)

目录

前言概要

 关于数据报流的关键方法签名

UDP协议传输案例(一收一发)

服务端(接收端)

服务端完整代码

 客户端(发送端)

客户端完整代码

Socket.close() 

UDP协议传输案例(简单的业务逻辑


创作不易多多支持😶‍🌫️😘


前言概要

         我们首先来了解一下, 什么是网络编程. 网络编程也就是网络上的主机, 通过不同的进程, 以编程的形式实现网络通信. 这种通信可以是同一个主机, 也可以是不同主机:

同一个主机上的不同进程之间的通信

 也可以是不同主机上的通信:

 计算机资源包括: 视频资源, 图片资源, 文本资源

        网络中的数据传输, 一般有发送端: 数据的发送方进程(源主机), 接收端: 数据的接收方进程, 收发方: 发送端和接收端两端.

        Socket套接字:  Socket套接字, 是由操作系统提供用于网络通信的技术, 是基于TCP/IP协议的网络通信的基本操作单元, 基于Socket套接字的网络程序开发就是网络编程

        Socket套接字, 主要针对传输层协议, 划分为三类: 

  1. 流套接字: 使用传输层TCP协议
  2. 数据报套接字: 使用UDP协议
  3. 原始套接字: 自定义传输层协议

接下来, 我们着重讲解数据报套接字.

        对于UDP协议来说, 具有无连接, 面向数据报的特征, 也就是说每次都是没有简历连接, 一次性的发送和接收数据.

        Java中使用UDP协议通信, 主要是基于DatagramSocket类来创建数据报套接字, 并使用DatagramPacket类作为被发送和接收的UDP数据报.

        其流程图大致如下:

         客户端和服务器之间通过DatagramSocket来建立连接, 客户端创建DatagramPacket数据报, 然后将对应的数据报发送给服务器, 服务器解析然后处理这个数据报, 随后服务器端创建一个DatagramPakcet数据报, 并填充处理结果, 并返回给客户端, 这里的客户端可以理解为发送端, 服务器可以理解为接收端.


 关于数据报流的关键方法签名

DatagramSocket:

        DatagramSocket是UDP协议的Socket套接字, 主要用于收发UDP数据报, 其构造方法如下:

DatagramSocket() : 创建一个UDP数据报套接字, 绑定到本机的任意一个端口(一般用于客户端)

DatagramSocket(int port) : 创建一个UDP数据报套接字, 绑定端口号为port. 一般用于服务器端

         其类方法如下:

void send(DatagramPacket dp) : 从此套接字发送数据(不会阻塞等待, 直接发送)

void receive(DatagramPacket dp) : 从此套接字接收数据报(如果没有接收到数据报,该方法会阻塞等待)

void close() : 关闭此数据的套接字

 DatagramPacket:

        DatagramPakcet是UDP的数据报, 用来装填要传输的数据, 可以理解为装饭的饭盒子. 其方法的构造如下:

DatagramPacket(byte[ ] buf, int len) : 构造一个DatagramPacket数据报, 其数据保存在buf字节数组中, 接收的指定长度为len.

DatagramPacket(byte[ ] buf, int offset,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值