【Java课程设计】仿QQ多人聊天室(基于TCP协议与JavaSwing)附下载

Java 基于Tcp/ip连接的多人交互聊天室(Socket编程) 项目说明: 本项目由三个.java文件(Client.java、Server.java、UI.java)和一个.jpg图片文件组成UI.java是负责界面的构成文件。本聊天室的界面极其简单。主要分为两个界面:第一个是启动时需要登陆的界面如下: 输入名字进去以后就可以直接聊天 这个聊天室相当于群聊,每一个登陆进去的人发的信息,其他人都会收到。 使用指南:1.运行Server.java文 阅读详情

仿QQ多人聊天室

下载地址:链接:https://pan.baidu.com/s/1dLFjSxwTA4gL5lI0B4UGuQ 
提取码:2qs0

有两个项目,分别是服务器chatterServer和客户端chatter,先开启服务器,再开启客户端,默认8888端口。

先上图(回环测试,即自己和自己聊天):

实现的主要功能:

1、一对一聊天:连接到服务器的所有客户端和另一个客户端“一对一”聊天

2、多对多聊天:连接到服务器的所有客户端在同一聊天室内聊天

使用到的Java技术:

1、Java图形界面编程(JFrame和各种组件的使用)。还包括内部类,事件监听。

2、Java IO。主要是字节流,聊天信息通过字节流编码并发送、接收。

3、Java TCP通信。

4、Java多线程。

5、Java集合。其中一个重点是重写equals方法和hashCode方法

6、Java异常处理

代码结构:

客户端

代码分为4个包:

com.chatter.GUI 和图形界面相关的类,主要是GUI类
com.chatter.client 和客户端后台有关的类,主要是Client类
com.chatter.user 和用户信息存储有关的类,包含Message类(数据的打包和解包),User类(用户信息,最后没用),PersonRecord类(用于记录和某个特定客户端的聊天记录),Record类(用于记录用户和每个其他用户的聊天记录)
com.chatter.main main方法

项目类图(客户端):

服务器只有一个类,和从客户端复制过去的一些类

主要代码如下:

UI模块:

package com.chatter.gui;

import java.awt.*;
import java.awt.event.*;
import java.util.Collection;
import java.util.HashSet;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import com.chatter.client.Client;
import com.chatter.user.Message;
import com.chatter.user.PersonRecord;
import com.chatter.user.User;

public class GUI {
	Client client;
	
	JFrame frame;
	Container pane;
	JPanel window, up, left, center, down;
	
	//上方的软件名
	private JLabel label;
	//左侧选择聊天对象的列表
	JList<String> list;
	DefaultListModel<String> dlm;
	//中间的聊天消息显示
	JTextArea text;
	//下方输入文本的区域
	public JTextField words;
	//发送按钮
	JButton button;
	
	
	final int WINDOW_WIDTH = 480;
	final int WINDOW_HEIGHT = 640;
	
	final double CUT_RATE_LEFT = 0.30;
	
	
	public GUI() {
		frame = new JFrame();
	
		pane = frame.getContentPane();
		window = new JPanel(new BorderLayout());
		up = new UpperPanel();
		left = new JPanel();
		center = new JPanel();
		down = new JPanel(new BorderLayout());
		
		//上方的软件图标和名称
		label = new JLabel();
		label.setPreferredSize(new Dimension(150,50));
		label.setFont(new Font("楷体", Font.PLAIN, 30));
		label.setText("GG聊天室");
		up.add(label);
		pane.add(BorderLayout.NORTH, up);
		
		//左侧的聊天对象选择栏
		dlm = new DefaultListModel<String>();
		list = new 
用Java做一个基于Swing的多人网络聊天室 项目简介:使用Java语言开发的多人聊天室程序 开发环境:MacOS+NetBeans8.1+JDK1.8 项目具体功能: 服务器端: 服务器端界面窗口 启动服务器按钮--------启动服务器功能 停止服务器按钮--------停止服务器功能----服务器停止,所有聊天退出 退出服务器按钮--------退出服务器功能----服务器关闭,所有聊天退出 即时聊天... 阅读详情

相关推荐

java实现仿QQ即时聊天

这是我的java大作业,这里就直接贴上我的实验报告了。 1.1项目介绍 这是一个模仿QQ的即时聊天软件,可以通过运行在本地的服务端,实现两个客服端之间的通信,即聊天。采用的是javafx架构作为GUI设计架构,个人认为优点是可以自己设计css,使界面达到美观的目的。本项目共有登录、注册、重置密码、主界面发消息、添加好友、好友列表项、查看聊天记录、删除聊天记录、未读消息提醒、好友主页、我的主页等模块...

monkey-jie的博客 3万+

基于TCP/IP 的Java 简易多人聊天器

这是基于TCP协议网上聊天程序。主要分为两个部分,一部分是服务器,一部分是客户端。两者结合,实现了基本的局域网多人聊天功能。对于程序设计语言,选择了JAVA语言。JAVA程序语言自带了强大的网络功能设计包,而且具有跨平台性,这无疑可以简化很多工作,节省很多时间。为了聊天数据的可靠性,TCP/IP协议无疑是一个很好的选择。为了实现即时通信,引入了多线程技术,从而实现了通信的即时性和并发性。

Java TCP仿QQ聊天室十个案例.rar

基于TCP原理,采用Socket编程技术和GUI界面,实现一个类似QQ的聊天程序。 任务描述 课题的内容 用Socket编程技术和GUI界面,实现一个类似QQ的聊天程序。 (1)实现登录注册(登录注册用图形化界面) (2)通信界面要求用图形用户界面,两个界面,Server服务端界面,Client客户端界面

使用TCP协议进行聊天小软件(多人聊天)

1.TCP协议实现聊天 2.多人聊天 3.友好界面 4.可以保存聊天记录 5.数据库的实现

基于TCP协议网络聊天程序 计算机网络课设

目 录 1 设计任务及目标 4 1.1 目标 4 1.2设计任务 4 2 需求分析 4 2.1用户需求 4 2.1.1建网需求 4 2.1.2校园网基本应用 5 2.1.3信息点的分布 7 2.2.技术上可行性分析 10 3 总体设计 11 3.1设计原则 11 3.2技术选型、设备选型路由协议ospf 11 3.2.1技术选型 11 3.2.2主备选型 16 3.3目标网络拓扑 21 3.4 Internet接入方案 22 3.5网络安全规划设计 22 3.6网络服务器规划 23 3.6.1 内网服务器区域规划 23 3.6.2外部服务器区域规划 23 3.7网络管理 23 3.8设备接口与连接 24 3.9小结 24 4 详细设计 25 4.1 IP子网规划与VLAN划分 25 4.1.1 VLAN规划 25 4.1.2 IP地址规划 28 4.2 DHCP、DNS实现方案 32 4.2.1 DNS 32 4.2.2 DHCP 32 4.3路由方案 33 4.3.1 内网路由协议 33 4.3.2 出口路由设计 34 4.4 NAT与ACL技术应用 35 4.4.1 NAT技术 35 4.4.2 ACL 技术 36 5 仿真实现 37 5.1仿真拓扑 37 5.2 VLAN仿真与测试 38 5.3路由的仿真与测试 39 5.4.ACL与NAT仿真与测试 39 6 结论 40 6.1任务完成情况 40 6.2特色与不足 41 6.2.1特色: 41 6.2.2不足: 42 6.3所遇到的问题 42 6.4体会 43 参考文献 45

linux多人聊天室管理系统(附实验报告)(附源代码)

本设计主要实现一个Linux下的局域网聊天工具的设计。该设计主要分为两部分,客户端部分和服务器部分。设计并实现一个简单的聊天室程序,用户名/密码注册和登录,客户端登陆到服务器聊天后,可以在聊天室内与其他用户交流。 1、 能做到3个以上用户之间的聊天; 辅助: 2 、系统要有用户管理功能; 3、 每个用户能管理自己的权限,比如 不接受信息,撤销已发的信息等;可以自己发挥; 4 、聊天信息的保存,比如保存三天内的信息,或其他规定; 5 、敏感词的过滤等等;

基于TCP的网络聊天程序

使用Qt-Creator编写的基于TCP协议的网络聊天程序,包含服务器端和客户端,自己写的,经过测试能够正常使用。

java写的一个简单基于tcp协议的多用户聊天系统

用j2se写的一个简单的聊天系统,写了客户端和服务器。用到了socket,流读写技术,服务器端采用了多线程等技术。基本上涵盖了j2se中所有学到的技术,非常适合学习了j2se的初学者练习使用。

java编程实现多人聊天室功能

主要为大家详细介绍了java编程实现多人聊天室功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一个简单的基于TCP的多线程聊天程序

一个简单的基于TCP的多线程聊天程序..每个客户端登陆后,服务器都会开出两个线程用于客户端之间的消息接收和转发,线程之间使用共享资源..

​开源大模型实战:GLM-4.1V-Thinking本地部署教程(附API调用代码)

​在AI应用从“能用”向“好用”进阶的当下,​的需求愈发强烈:企业需保障数据安全(如医疗影像、金融报告不外传),开发者追求定制化能力(如微调模型适配垂直场景),科研团队则依赖离线环境处理敏感数据。智谱AI开源的​(10B级参数,支持图像、视频、文档多模态推理)凭借的优势,成为本地部署的热门选择。不过,对于“不想折腾技术”的普通用户或快速验证需求的团队而言,​,无需安装配置,打开即用,堪称“零门槛”体验的捷径。本文将分为两部分:先手把手教你​(适合有技术背景的用户),再对比介绍。

gogoMark的博客 1339

Android Termux 安装Kali Linux 或 kali Nethunter史诗级详细教程

Termux 安装kali

风云小虾米的博客 6万+

微信支付V2,jsapi支付拉起收银台报错:调用支付JSAPI缺少参数:total_fee

拉起收银台报错

m0_54355172的博客 3871

告别手动点鼠标:用Python脚本批量跑ADS版图仿真,效率提升10倍(附完整代码)

本文详细介绍了如何利用Python脚本自动化ADS版图仿真流程,显著提升射频工程师的工作效率。通过调用ADS底层接口,实现参数化修改、批量任务调度和结果自动收集,解决了手动操作中的常见问题,如仿真不更新等。附完整代码,帮助开发者快速实现10倍效率提升。

weixin_42523543的博客 331

记录rk3588 在Linux 6.1内核版本声卡 bug。

rk3588 Audio bug

Yongheng6的博客 855

利用恒源云在云端租用GPU服务器训练YOLOv8模型(包括Linux系统命令讲解)

为当涉及到深度学习的训练任务时,GPU的计算能力是不可或缺的。相对于传统的中央处理器(CPU),图形处理器(GPU)具有更强大的并行计算能力,能够显著加速深度学习模型的训练过程。深度学习算法通常涉及大量的矩阵运算和张量操作,而GPU的并行计算架构使得它们能够高效地执行这些计算,从而加速模型训练的速度。恒源云是一个经济高效的云计算平台,您可以通过恒源云的控制台或者命令行界面来管理实例、上传和下载数据、执行训练任务等。

Snu77的博客 6720

多 Agent 之间如何通信和协调?OpenClaw 的 Gateway 在其中扮演什么角色?

多 Agent 之间如何通信和协调?OpenClaw 的 Gateway 在其中扮演什么角色?

我哎GIS博客 1665

【Prometheus】prometheus结合cAdvisor监控docker容器运行状态,并且实现实时告警通知

Docker的监控,可以使用Docker自带的stats命令来获取当前主机上运行中的容器的资源使用情况。 例如:容器的CPU使用率、内存占用、网络IO以及磁盘IO等指标。

景天科技苑 6万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 算法与数据结构【Java实现】:二叉查找树
下一篇: 【Java】基于敏捷开发的简易Web服务器(附下载)
WilliamCode
博客等级 码龄11年 118粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值