基于多线程与socket套接字实现的网络聊天小程序 writeor的博客 wr的小窝喔~
  • 欢迎访问wr的小窝~,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站.
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 嘟嘟嘟嘟嘟嘟啦~~

基于多线程与socket套接字实现的网络聊天小程序

java writeor 5年前 (2021-01-05) 4505次浏览 已收录 1个评论

  这个文章用来记录一下20年的java课的结课项目。本程序基于多线程与socket套接字实现的网络聊天小程序。用户可以注册账号与密码来登入客户端系统与服务器通信。用户可以发送聊天消息给其他用户,获取历史消息,查看在线用户。用户通过客户端发送各种信息给服务器,并经由服务器处理后再将消息回复给用户和其他在线用户。源码链接在文章的结尾,如果有需要的朋友可以拿去斧正一下~谢谢)感谢交流学习。

  • 下面是软件的效果图 :

基于多线程与socket套接字实现的网络聊天小程序 基于多线程与socket套接字实现的网络聊天小程序 基于多线程与socket套接字实现的网络聊天小程序

  • 下面是用例图和类图 :

基于多线程与socket套接字实现的网络聊天小程序 基于多线程与socket套接字实现的网络聊天小程序

  • 下面是每个类的各个方法的具体实现功能的介绍和变量的功能 :

客户端的类的表格:

类名 属性/方法 描述
Client String binPath 存储工作路径的变量
File f 将login_config.txt存储在工作路径,该文件存储用户登录界面保存的密码和单选框的状态选择
HashMap login_config 用于存储用户登录界面保存的密码和单选框的状态选择,之后将map输出到login_config.txt
String server_address 保存要连接的服务器ip地址
port 保存要连接的服务器监听的端口
Client() Client类的构造方法,创建组件生成界面并根据login_config.txt向组件中填入保存的账号和密码
main(String[] args) 程序入口,设置框架属性.
boolean flag 用来判断是否画出确认密码的界面。
actionPerformed(ActionEvent e) 监听‘注册’和‘登录’按钮。并实现按钮的功能
Chat_UI String binPath 存储工作路径的变量
Chat_UI(String user_name) Client类的构造方法,创建组件生成界面.
setDocs(JTextPane pan,String   str,Color   col,boolean   bold,int   size) 实现给文本组件添加可以设置颜色的文本,bold为设置是否为粗体。
HeartThread 发送心跳包的线程,每发送10次心跳包向服务器获取一次在线用户列表并将内容显示在GUI。每次发送心跳包都向服务器询问有没有新的其他用户的新消息并显示在GUI。
main(String user_name) 生成并显示聊天界面和组件,定义按钮组件和回车键的监听事件。
sumit String updata(String data) 实现与服务器利用socket进行通信,发送String并返回服务器回复的String。

 

客户端类表格:

 

类名 属性/方法 描述
Server ServerSocket server 定义的server socket
String binPath 存储工作路径的变量
HashMap<String,List> online_user 保存在线用户和他接受到的别人的消息。Map的键为用户名,值为保存其他用户聊天消息的list。
HashMap <String,Long>online_keep 保存在线用户的用户名和他发送心跳包时保存的时间戳。用于判断用户还是否在线.
int port 保存服务器监听的端口。
main(String args[]) 程序主入口,实例界面,开启监听的线程,开启利用心跳包判断用户是否仍然在线的线程。
OnlineThread 实现因客户端因不明原因无法正常注销的情况下,判断用户是否还在线的线程。
ServerThread 开启服务器监听的线程,每有一个新的socket连接就创建新的线程。
boolean flag 在ServerThread线程中用于判断用户是否选择关闭服务器监听。
Task ServerThread线程监听到新链接后创建新的线程调用此线程。Task会创建一个新的socket与客户端连接并调用handleSocket()
handleSocket() 实现读取客户端发送来的消息,处理消息,并回复.
UI server的内部类,实现GUI创建和按钮监听。
UI(ServerThread ST) UI类的构造函数
GUIPringStream JTextComponent component 目标输出 GUI 组件
GUIPrintStream(OutputStream out, JTextComponent component) GUIPringStream的构造方法,传入流和输出组件。
GUIPringStream 该类用于将流输出到GUI文本组件。
  •  小结:如果想要客户端正常运行,需要先运行服务器的程序。这是个一学期课余完成的项目,安全方面根本就没有考虑过,有很多地方不是特别完善,见笑了)还有各种线程写的比较乱…但是加深了自己对socket的了解还是很不错的)下面是源码的下载链接。如果有问题可以加q或者微信来交流喔)

文件下载

  文件名称:chat_room.zip  文件大小:14KB
  下载声明:本站文件大多来自于网络,仅供学习和研究使用,不得用于商业用途,如有版权问题,请联系博猪!
  下载地址:聊天室源码下载

 


wr的小窝 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于多线程与socket套接字实现的网络聊天小程序
喜欢 (10)
[1528532472@qq.com]
分享 (0)

您必须 登录 才能发表评论!

(1)个小伙伴在吐槽
  1. writeor
    喔)~
    writeor2021-01-05 20:51
wpChatIcon
wpChatIcon