计算机网络课程设计实验报告--QQ网络聊天室实现
更新时间:2023-04-26 14:56:01 阅读量: 实用文档 文档下载
计算机网络课程设计报告
设计选题网络聊天室
姓名马继鸣
学号 0909090630
完成时间 2012-1-12 一、需求分析
聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。
主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。
二. 设计
1.设计思想:
课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服
务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客
户端登录到服务器端才可以实现正常的聊天功能。
2.功能设计
(1)服务器端的主要功能如下。
在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000.
当停止服务时,断开所有用户连接。
(2)客户端的主要功能如下。
连接到已经开启聊天服务的服务端。
当服务器端开启的话,用户可以随时登录与注销。
用户可以向所有人发送消息。
3.详细设计
聊天室服务器端设计
聊天室服务器中主要的功能文件的功能如下:
MyButLis.java
主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。
public class MyButLis implements ActionListener
private MyServe server;
private JTextField filed1;
public void actionPerformed(ActionEvent e)
MyChatSet.java
服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。
public static ArrayList
public static void addThread(MyserThread th) //增加一个服务器线程对象
public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息
public static void SendOSMess(String type,String user)//其他用户上下线信息
public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息
public static void SendList//用户列表
MyCheckTool.java
保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。
//建立码表,用以保存用户信息
private static Map
public static boolean CheckUser(MyUserInfo user)// 验证用户名
MyFrame.java
建立服务器的主界面,关联侦听器。并启动线程。
MyFrame my=new MyFrame();
my.ShowUI();// 显示UI界面
public void ShowUI()
server.SetUP();
MyserThread.java
服务器线程类,定义输入输出流,发送读取信息,获取信息中相应标签的信息,用以判断用户名,密码,并可以中断连接。
this.socket=socket;
output=socket.getOutputStream();
input=socket.getInputStream();
public void SendMess(String s)//发送信息
public String ReadMess() //读取信息
public boolean ReadFirst()//将第一条信息读出来
public String GetValue(String type ,String Mess)
public void Pocess()//用以判断用户名、密码
public void run()//线程开始
public MyUserInfo getUser()//获得该线程中的用户信息
MyServe.java
建立服务器,并启动该线程。
server=new ServerSocket(inport);
Socket sc=server.accept();//获得socket对象
MyserThread th=new MyserThread(sc);
th.start(); //启动线程
客户端中主要的功能文件概述如下:
MyButLis.java
主要用于添加事件侦听和动作处理,具体是在客户端中的登陆注册发送等的处理。
public MyButLis(MySocketChat socket,JTextArea area1,JTextArea area2,MyLoginUI loginUI,JComboBox box)
正在阅读:
广州如何注册一家餐饮公司03-10
有机无机复合型耐沾污涂料07-20
脚手架专项施工方案 - 图文04-07
关于小学生近视情况的调查问卷05-30
当代篆刻名家润格授权发布05-05
2018 年专业技术人员绩效管理与业务能力提升(公共课)试题及答案05-10
小学语文考试常见题型及答题技巧,太实用了10-10
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 网络课程
- 聊天室
- 实验
- 实现
- 计算机
- 报告
- 设计
- 网络
- 人教版2019-2020学年中考语文试题D卷(检测)
- 2015年度小学教师继续教育个人总结 杨胜强
- 中国茶叶行业市场竞争格局与竞争对手分析研究报告2020-2025
- 高中英语下学期第11周周练题
- 中小学数据导入模版
- 开工仪式项目建议书
- 第九章习题答案(产品策略)
- 师德师风建设(十要十不准十禁止)
- 2017年安全员考试题库及答案(1-10)
- 机动车驾驶员理论考试试题总结1
- 《食物中能量的释放 第2课时》示范公开课教学设计【生物北师大七
- 高速公路路面工程施工方案
- 高碘性甲状腺肿是怎么回事?
- 个人安全防护用品使用制度实用版
- 英语(统考辅导)练习册
- 长安福特首批翼搏翼虎纯正附件上市及翼搏重要附件展示活动公告-V
- 概率 试题库(优秀资料,免费下载)
- 51CTO下载-运维工程师必会的109个Linux命令
- (易错题)小学数学三年级上册第二单元《万以内的加法和减法(一)》
- 山东省光电子器件行业企业名录2019版126家