多线程实现字典系统(server+client)

2023-11-18

                                   多线程字典系统实现

首先说明下该系统可以实现的功能,小白都可以!!!!

该博客只提供学习和实现的思路,如果需要详细的代码,请留言!!!

1 具体要求

简单来说,就是实现服务器端和客户端,可以做到多个客户端并发对字典中的数据进行操作,但是不考虑跨局域网的情况,但是我稍后的文章会介绍一个跨局域网多线程系统的实现。

1.需要实现客户端和服务器端 Socket

2.实现多用户并发执行字典查询等操作 Thread类/Runnable接口

3.使用了TCP/UDP协议,因为想要保证数据的可靠性,我选择了TCP

4.数据的存储可以使用txt文件,但是我这里使用的是MySQL数据库

5.可以添加线程池的功能,也就是用来控制服务器端可以处理的线程数。因为要求我不能使用现成的类库,但是有需要的同学可以自己添加。

6.GUI使用的是java的swing库。

 

2. 设计思路

我会详细的描述下我的思路,但是我不会提供具体的代码,如果有代码的需要,请留言或者私聊联系:

为了完成这个任务,我们需要具体一些知识,刚开始学习的同学,可能会觉得很混乱,不是该干什么。

1. 需要了解java中Thread类或者Runnable接口如何使用

这里只需要知道thread和runnable如何使用就可以,都是最基本的函数。网上文章一堆。

 

2. 需要知道java如何实现TCP实现,我之前写过一个文章(代码详解),不会的可以采纳:「java」TCP编程

但是我在这里也简单的提下TCP的实现

首先对于server来说,它需要开放一个port来监听,是否有client的请求。当server开启后,这个端口就会在服务器一端开启,开始等待。也就是下面这句代码,这个是服务器自己定义的。

ServerSocket serverSocket =new ServerSocket(port);

如果client需要连接,那么就需要对这个port传输request。接下啦,如果有client发出,请求,server就会使用下面的语句知道,然后开始处理。

socketClient=serverSocket.accept();

然后server就可以使用socketClient来接收client的信息,并且向client写入信息。

这里信息的传递,可以自定义,比如json等,我使用的是BufferedReader。

 

下面说一下client部分,client需要使用socket来连接sever,显而易见的两个参数是serverIP(address)和serverPort。

Socket socket = new Socket(serverIp, serverPort);

只要服务器和客户端都正常运行,二者已经建立了联系,可以传输数据了,传输方式和上文的一样。

 

也就是说1.2 都完成后,基本并发的tcp通讯已经搭建好了。下面就是前端和数据库了

3.数据存储

本地txt文件和mysql数据都可。

txt文件就是需要常规的java读取。然后找到适当的数据结构存储就可以了。

mysql数据库就是导入包,然后写sql语句的”增,删,改,查“就可以了。写sql语句需要写正确。

使用文件的话,需要自己写锁哈。但是使用数据库不用,因为mysql自带锁的机制。

如果都是在一个机子上跑的话,都可以哈。

 

4. GUI的设计需要swing类

前端界面就是swing就可以了,没写过的,百度搜swing的GUI实现例子,学会基本的变量和监控怎么写就可以。

 

5. 这些知识都具备了就可以整合到一起了,然后调bug了。

前端和后端怎么整合哈?

第一件事,就是怎么传数据

就是GUI界面给的是一个按钮,但是没有给功能,我们相当于把功能加上。

就本题来说,肯定需要几个按钮:查询,添加,删除

也就是使用该按钮的监控,监测到哪个按钮被点击了,就传输相应的指令给server。

server需要在run中自己识别哈,然后去对数据库进行相应的操作。

然后把得到的结果在传输回客户端。

客户端需要显示结果(有的时候是显示一条结果,有的是需要显示历史结果,也就是全部的结果)

显示一条的很简单,接受到就显示,在while中等着接受下一条就可以了。

如果是写历史记录的话,两种,点击按钮获取历史记录,和自动在屏幕上就一条条显示略有不同,

第一种,使用一个数据结构,存储每次的string就可以了。两条为一组,一条request,一条result。

第二种,就是可以不用数据结构,直接往string后面加就可以,然后一直显示同一个string。

 

3. 类图

下面是我程序的一个类图,但是因为我界面登陆的时候有数据库验证,因此在server的时候多了一个验证,operation的参数也比较多,正常不需要这么多。

同时我还使用了线程池限制client的数量。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多线程实现字典系统(server+client) 的相关文章

随机推荐

  • 设计一个算法判断表达式中的括号是否匹配

    一 问题描述 设计一个算法判断表达式中的括号是否匹配 二 问题解答 解析 这里需要用到STL在算法设计中的应用 STL在算法设计中的应用有如下几种 存放主数据 存放临时数据 检测数据元素的唯一性 数据的排序 优先队列作为堆 因此这里需要用上
  • 安装visio报错,提示无法安装64位版本的Office,找到了以下32位程序怎么办

    今天安装Visio准备用来写系统详细说明书上面画图的结果发现居然报错 实在是我也没有装过office 试过了几个方案什么office修复助手啊 什么什么的发现卵用没有 最后解决方案 win r打开运行 输入regedit 依次到HKEY C
  • 服务器拔下内存条系统不能启动,电脑主板不能启动的解决方法

    电脑主板不能启动的解决方法 因为主板扩展槽或扩展卡有问题 导致插上显卡 声卡等扩展卡后 主板没有响应 因此造成开机无显示 例如蛮力拆装agp显卡 导致agp插槽开裂 即可造成此类故障 下面是JY135小编收集整理的电脑主板不能启动的解决方法
  • 操作系统习题整理

    操作系统习题整理 从网上和课本上汇总整理了一些操作系统相关的习题 可以作为复习资料使用 1 操作系统是一种 B A 通用软件 B 系统软件 C 应用软件 D 软件包 2 操作系统是对 C 进行管理的软件 A 软件 B 硬件 C计算机资源 D
  • replaceAll()正则表达式替换内容

    String input camelCasing input input replaceAll A Z 1 System out println input 输出结果为 camel Casing
  • Pandas rank()函数排名的用法与解释

    之前搜关于pandas rank 函数的帖子 好几个大哥都是照搬书 当然也有一些大神直接一顿操作 截图 我结合了书还有自己的理解 希望没有错误 也希望和我一样的新手能看懂 谢谢 1 rank 默认情况下 rank 通过将平均排名分配到每个组
  • thinkphp6 入门(6)--中间件是什么 怎么用

    一 什么是中间件 当客户端发送请求至服务器时 HTTP请求会经过多个中间件 最后返回响应给客户端 中间件可以 在请求到达目标控制器或动作之前对请求进行操作 可以在响应离开目标控制器或动作之前对响应进行操作 二 中间件的作用 我们可以在不修改
  • 【Linux学习】vim编辑器的使用

    Linux环境中vim编辑器的使用 前言 一 vim是什么 二 vim的使用 1 vim的三种模式 1 1 命令模式 Command mode 1 2 输入模式 Insert mode 1 3 底线命令模式 Last line mode 2
  • xshell5中文破解版

    http www xue51 com soft 1442 html
  • 护网面试题

    1 有无安全设备的使用经验 2 了解过TOP10没有 1 SQL注入 2 失效的身份认证和会话管理 3 跨站脚本攻击XSS 4 直接引用不安全的对象 5 安全配置错误 6 敏感信息泄露 7 缺少功能级的访问控制 8 跨站请求伪造CSRF 9
  • 解决找不到mfc140.dll的问题

    mfc140 dll控件常规安装方法 仅供参考 如果在运行某软件或编译程序时提示缺少 找不到mfc140 dll等类似提示 您可将从脚本之家下载来的mfc140 dll拷贝到指定目录即可 一般是system系统目录或放到软件同级目录里面 或
  • Neo4j宣布下一代图数据平台Neo4j 5上线

    增强的可扩展性 敏捷性 高效率和性能优势使企业能够在任何环境中更快 更轻松地创建和部署智能应用程序 中国北京 2022 年 11 月 10日 图技术的领导者Neo4j 今天宣布了下一代可用于云端的图数据平台Neo4j 5上线 在传统数据库的
  • 不均匀硬币产生等概率/均匀硬币产生非等概率

    不均匀硬币产生等概率 已知随机数生成函数random 返回0的概率是60 返回1的概率是40 根据random 实现一个随机数函数f 使返回0和1的概率是50 连续投掷两次 第一次为0 第二次为1 返回0 第一次为1 第二次为0 返回1 这
  • Unicode汉字编码表

    1 Unicode编码表 Unicode只有一个字符集 中 日 韩的三种文字占用了Unicode中0x3000到0x9FFF的部分 Unicode目前普遍采用的是UCS 2 它用两个字节来编码一个字符 比如汉字 经 的编码是0x7ECF 注
  • 使用layui 写一段动态向form表单添加select下拉框,带删除功能

    可以参考如下示例代码 实现动态向表单中添加和删除 select 下拉框 div class layui container div
  • [debug] “ImportError DLL load failed 找不到指定的程序”的解析和解决办法。

    ImportError DLL load failed 找不到指定的程序 的解析和解决办法 文章目录 ImportError DLL load failed 找不到指定的程序 的解析和解决办法 问题描述 问题解析 解决方法 查看依赖库信息
  • python request要求接口参数必须是json数据

    Reqeusts支持以form表单形式发送post请求 只需要将请求的参数构造成一个字典 然后传给requests post 的data参数即可 data参数的格式如下 content type在header中设置 1 data为dict时
  • 线代:1.3矩阵的逆

    文章目录 任务详解 矩阵的逆 一定是方阵 先导知识 逆的定义 定理1 定理2 逆矩阵的性质 本课程来自深度之眼 部分截图来自课程视频 第一章 线性代数 1 3矩阵的逆 在线LaTeX公式编辑器 任务详解 1 掌握矩阵逆的来源 可逆的充要条件
  • Nginx 安装与部署配置以及Nginx和uWSGI开机自启

    下载 官方网站 https nginx org en download html Windows下安装 安装 下载后解压 切记不能含有中文路径 文件结构如图 我解压的路径就有中文 记得拷贝放置于英文目录下即可 启动 两种方法 1 直接双击该
  • 多线程实现字典系统(server+client)

    多线程字典系统实现 首先说明下该系统可以实现的功能 小白都可以 该博客只提供学习和实现的思路 如果需要详细的代码 请留言 1 具体要求 简单来说 就是实现服务器端和客户端 可以做到多个客户端并发对字典中的数据进行操作 但是不考虑跨局域网的情