Java 实现的多人网络聊天室

Java 实现的多人网络聊天室

Author : ScorpioDong

1. 成品展示

Java 实现的多人网络聊天室

2. 软件界面的绘制

Java可用的GUI框架有AWT,Swing、JavaFX等,JavaFX是Java推荐使用的较大型的GUI框架,界面拥有很高的可定制性。因为本软件功能较少,以学习网络通信为目的,所以使用简单易上手的Swing框架。

这里新建了一个MainFrame的类,继承自JFrame,实现软件的界面。(这里直接使用的绝对布局,简单粗暴)

Java 实现的多人网络聊天室

3. Model

软件中定义了两个Model:Command 和 Message

Command数据模型负责网络数据传输中的命令传输。

Java 实现的多人网络聊天室

Message数据模型负责网络数据传输中的消息和消息附加信息的传输,包括发信人昵称,发信人IP,发信时间,信息内容。

Java 实现的多人网络聊天室

4. 网络通信

4.1 TCP客户端实现

定义了一个TcpComm类,继承自Socket类,自定义了write和read方法。

Java 实现的多人网络聊天室

4.2 TCP服务端实现

这里使用了最简单的方法,ServerSocket监听端口,当accept方法的到一个Socket对象时,就开辟一个线程,进行数据的处理。(此方法适合接入量小的时候,接入量大请考虑使用NIO)

Java 实现的多人网络聊天室

5. 软件各种事件的处理

信息发送事件

Java 实现的多人网络聊天室

TCP初始化和消息接收事件

Java 实现的多人网络聊天室

客户端程序结束事件,用于向服务器告知下线和资源释放

Java 实现的多人网络聊天室

6. 工程源码

Gitee : https://gitee.com/ScorpioDong/MyChat

7. 有待改进之处

  1. 软件使用while(true)循环进行网络数据的接收,导致CPU资源利用率过高。后面考虑使用Java NIO事件驱动。
  2. 界面过于生硬,后面考虑如何美化一下。