回顾前文
多线程入门练习
多线程通信
在之前的多线程学习中,了解了TCP/UDP网络Socket编程,解决了服务器端建立连接后向客户端发送多条消息接收的问题,解决方法通俗易懂,接收信息的功能由客户端集中到线程处理,实现多线程同步。但是有时候服务端只实现了单用户的功能,而现在需要多用户访问服务端资源,服务端要和各个客户端建立连接,用对话进行通信,就像我们用微信、视频等每天都有客户端,这是多用户与服务器通信的一个例子。
简单来说,本次任务就是使用客户端-服务器架构,设计和实现服务器端和客户端,允许并发客户端搜索单词的含义,添加一个新单词,删除一个现有的单词,可以同时做多个客户端对字典中的数据进行操作,但不考虑跨局域网的情况。
系统组件的简要说明
简要描述;简介
该系统包括服务器和客户端实现,并具有显式使用 Java 线程和套接字来进行并发处理和远程通信。自定义字典数据是从本地文件中读入的。
具体使用和实现要求如下。
1.需要实现客户端和服务端的Socket
2.实现多user并发执行字典查询/增加/删除等操作Thread类/Runnable接口
3.多线程字典系统使用TCP协议
4.系统数据的存储使用的是Json文件
系统功能
(1)查询给定单词的含义
(2)添加/更新一个新词和含义
(3)删除现有单词
服务器为每个请求创建一个线程,并通过更改字典来执行操作。
整体架构
该系统遵循客户端/服务器架构,允许多个客户端连接到(单个)多线程服务器并同时执行操作。
• DictionaryClient.jar/ DictionaryServer.jar – 用于运行系统
• MultiThreadDictionary.java - 处理请求并对字典进行更改的多线程服务器
• DictionaryCommand.java/ OnlineDictCommand.java - 命令格式的服务器客户端要求
• DictServer.java - 设置字典服务器并等待客户端请求。 (接受请求并创建线程的服务器 GUI)
• OnlineDict.java - 为客户提供一个交互界面来发送他们的请求并获得反馈。(接受请求并创建线程的客户端 GUI)
• dictionary.json - json 条目格式的字典文件
未来改进展望
明确地说,套接字和线程是网络通信和并发的最低抽象级别。 未来系统可以增加线程池的功能,即控制服务器端可以处理的线程数。 创建线程池时,它会实例化一定数量的线程以使其可用。
以后要拿mysql数据库来导入字典数据,因为如果用文件,需要自己写锁。 但是没有使用数据库,这是由于它自己的锁定机制。
此外,前端的界面设计非常简单,以后可以了解更多关于GUI的设计。