这是张富涛的第9篇原创
网络编程:UDP编程(2)
1. 前言
在上一章《网络编程:UDP编程(1)》中我们介绍了UDP方式的简单客户端和服务器端实现方式,这一章我们将要对其进行一下改造,类似“TCP”的客户端和服务器端一样,能够实现“客户端多次提交请求及服务器端多次处理”功能,呢么让我们先回顾一下上一章客户端和服务器端的实现代码吧!
2. 代码回顾
(改造前)UDP简单客户端的实现
(改造前)UDP简单服务器端的实现
3. 代码改造
首先我们将客户端进行改造,我们将其发送数据的一块增加一个循环,使其能够循环发送数据给服务器端。
我们在考虑到服务器端创建线程并且响应的时间(其实并没有太长)和打印日志的完整情况,所以让每次发送完数据包休息1秒。
接下来我们可以对服务器端进行改造:
服务器端是给多个客户端使用的,我们之前的代码是只能处理一个客户端发送的数据包,这样不符合服务器端的概念,那么我们该如何改造呢?我们可以做一个循环,当服务器端接收到了一个客户端的数据包时,就单独新建一个线程进行工作,利用多线程实现这个功能。
首先我们创建一个“UDPThread”线程类,让它继承“Thread”类。同时在构造方法里声明需要一个“DatagramSocket”和“DatagramPacket”对象,其中“DatagramSocket”用于给客户端返回数据,“DatagramPacket”是获取客户端的数据包,并为后续执行一定的业务逻辑做准备,这样我们就可以在服务器端接收到客户端的数据包后,将其传给“UDPThread”进行单独处理业务了。
然后我们改造服务器端代码,既然将处理“接收到的数据包”代码都放在线程里了,就可以把那些代码删掉了,同时做一个死循环不停让阻塞方法接收客户端发送的数据包,只要接收一个就新建一个线程并处理。
最终结果为:
服务器端:
客户端:
总而言之,基本的改造思路跟TCP方式的网络通讯代码是相同的,我们主要的目标是让客户端能多次发送请求,和让服务器端能接收到多个客户端的请求并处理,小伙伴们学会了吗?
---------------
公众号:张富涛的学习笔记(ID:futaoNT)
知乎:张富涛
CSDN:张富涛
这是一个在夜晚可以靠编程拯救世界的程序员,关注他将在第一时间获悉他的知识、工作心得!
长按下图二维码关注: