Java网络聊天室报告
Java网络聊天室课程报告
1系统开发的意义及需求分析
1.1整体思路
该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。首先是客户端设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。 1.2功能需求分析
实现网络聊天的功能,采用Windows Socket(或Java Socket)编程,服务器与客户端采用了TCP/IP连接方式,在设计聊天方案时,可将所有信息发往服务器端,再由服务器进行处理,服务器端是所有信息的中心。聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两个方面所要完成的任务。 服务器端的任务包括:
1、服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接。
2、服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。
以上就是服务器端最主要的两个任务。不难看出,服务器端的任务并不复杂。 客户端应该完成的任务包括:
1、与服务器端建立通信通道,向服务器端发送信息。 2、接收来自服务器的信息。
相对服务器而言,客户端的任务更加简单,有了以上的简单分析,可以知道,解决上述四个问题,即完成了该聊天系统的核心。
2.系统分析与设计方案
2.1开发环境及工具 本系统所用的工具:
服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.4.2;Eclipse。 客户端: java环境jdk,建议jdk1.4.2;Eclipse。 本系统运行所需用到的环境为: 硬件配置 :
中央处理器(CPU) :P4 2.0G以上的处理器; 硬 盘:40GB以上硬盘; 内 存:256以上的DDR内存; 显 卡:128M以上显存显卡
软件配置:WINDOWS 7 版本、All-In-One-Eclipse-311、j2sdk-1.42等。 2.2系统功能流图
图1 系统功能流图 功能流程说明如下:
(1)启动服务器程序,服务器端创建一个ServerSocket对象,指定端口号。 (2)ServerSocket对象等候客户端的连接请求。 (3)启动客户端程序。
(4)客户端创建一个Socket对象,指定主机地址和端口号,向服务器发送连接请求。 (5)服务器端收到客户端请求,建立一条TCP连接,再创建一个Socket对象与客户端的Socket对象进行通信。
(6)服务器端和客户端分别建立字节输入/输出流,进行数据传输准备。
(7)服务器端和客户端通过各自的字节输入流获得对方发送过来的数据,通过字节输出向对方发送数据。
(8)一方决定结束通信,向对方发送结束信息,另一方收到结束信息后,双方分别关闭各自的TCP连接。
(9)对象停止等候客户端连接请求。 2.3多用户实时工作原理图
图2 多用户实时工作原理图
注:服务器的run()方法中采用了while(true)结构,不断监听客户端的请求,如收到请求,建立与当前请求的客户端连接的套接字,从而与客户端建立联系。
3. 系统实现与最终效果
3.1系统工作的过程:
本系统的编译环境,及编写平台为java。主要用到的类为http://www.77cn.com.cn包中的Socket类。
以服务器所在的主机的ip为“220.167.46.7”所侦听的端口号为“6666”。分别先后启动服务器和客户端应用程序,客户端用户填入服务器的地址,当服务器收到客户端的登录请求后,客户端和服务器通过套接字建立了联系。建立连接后双方就可以相互通信:客户端在自己的文本框输入要发送的信息点击发送后,发送的信息就会显示在服务器和目的客户端的文本域中,同样服务器也可以在自己的文本框输入系统信息,点击发送信息按钮后,发送的信息就会显示在服务器和客户端的文本域中。 3.2使用方法
1.双击server.jar,如果服务器不在自己电脑上,在确定服务器开启的情况下进入第二步; 2.双击clien.jar;
3.在打开的client 端,在连接的窗口输入服务器的地址,如果服务器就在自己的电脑上可输入本机计算机名或ip,如果在其他主机上则输入服务器的ip; 4.点击“连接”;
5.如果连接成功,显示Connect sucessfully.
6.现在在消息一栏输入你想说的话,确定你自己所属的线程,即可聊天. 3.3各功能模块运行效果 1.ChatRoomServer.服务器: (1)界面提示和记录多线程的使用。 (2)广播多线程信息。
2.ChatRoomClient 客户端: (1)用ip 链接任意匹配服务器 (2)用户界面交流
3.两个用户链接到服务器进行交流 (1)服务器端显示
(2)客户端显示
设在客户机上的客户端界面
设在服务器端的客户界面
4.多个用户之间开始交流,进行通信.
5.多人进行通信
4. 主要程序源代码
ChatRoomServer.服务器
当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象。
public void run(){//接受连接并记录线程信息 int i=0;
try{//无限循环实现多线程,实现与多个用户的同时连接 while(true){
Socket clientSock=serverSock.accept();//监听并接受客户的请求
CommunicateThread ct=new CommunicateThread(clientSock,this,index);//创建线程保持连接
clients.add(ct);//record Communicate Thread; i++;
index++;//version2
clientsInfor.add("Thread-"+i); processMsg("Thread-"+i+"join in\n"); }
}catch(IOException e){ processMsg(e.toString()); } }
广播线程,读取每个连接线程的信息并把信息以字符串的形式发送出去。
public void run(){ try{
while(true){
for(int i=0;i<chatClients.size();i++){
comThread1=(CommunicateThread)chatClients.get(i); msgStack=http://www.77cn.com.cnrStack;//得到每个连接的信息栈 clientName=(String)clientMsg.get(i);//客户名 //读取每个连接线程的信息栈并把信息发送出去 for(int j=0;j<msgStack.size();j++){ string=(String)msgStack.get(j);
broadcastInfor=clientName+"->"+string; broadcast(broadcastInfor); }
msgStack.removeAllElements();//清除以发送的信息 } try{
Thread.sleep(100);//version2 }catch(InterruptedException ex){} }
}catch(Exception e){} }
ChatRoomClient 客户端
处理与客户端的通讯线程,因为使用了while(true)无限循环,使得客户端能不断更新聊天纪录,实现了实时聊天
public void run(){ String msg; isTrue=true; while(isTrue){ try{
msg=in.readLine();
if(msg.equals("Server exit!")){//server exit processMsg(msg); stopRun();//终止线程 }else if(msg!=null){ processMsg(msg); }
Thread.sleep(1000); }catch(IOException e){ processMsg(e.to …… 此处隐藏:2703字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [幼儿教育]【完整版】2019-2025年中国药物发现外
- [幼儿教育]2018-2019年初中信息技术广东初一竞赛
- [幼儿教育]最新外研版(一起)小学英语五年级上册《
- [幼儿教育]农业推广与创新管理专业 -中农大毕业论
- [幼儿教育]2017-2022年中国更年期用药行业市场深
- [幼儿教育]数学1.1.2第1课时棱柱、棱锥和棱台的结
- [幼儿教育]二年级群文阅读课例欣赏
- [幼儿教育]2010-2015年中国保险行业投资分析及深
- [幼儿教育]厄运打不垮的信念第一课时
- [幼儿教育]巧用文本,让表达在言语中绽放论文
- [幼儿教育]中学生百科知识竞赛题及答案
- [幼儿教育]八大菜系英文简介
- [幼儿教育]中国男装牛仔裤市场发展研究及投资前景
- [幼儿教育]远程数字视频监控系统在银行的应用
- [幼儿教育]光纤光缆制造工艺及设备
- [幼儿教育]国家安全法试题及答案
- [幼儿教育]2011高中提前招生及竞赛试题(物理卷1)
- [幼儿教育]宁夏第三产业房地产业、科学研究和技术
- [幼儿教育]中兴通讯 ME3000模块用户硬件设计手册_
- [幼儿教育]紫外线灯管的辐照强度问题
- 苏联东欧剧变的原因和历史教训浅析
- 人工智能导论实验报告(学生)
- 思科ITE章考试原题及答案
- 《学习雷锋好榜样》主题班会教案
- 加油站建设项目安全评价报告
- 剖析社保卡管理系统
- 2017-2018年影视剧新媒体版权运营行业
- 2017-2018学年四川省成都市高一上学期
- 2019最新高中数学 第三章 3.2.1 几类不
- 2011-2015年中国基酸市场调查及行业前
- 人教版新课标选修八Unit 1 课件Warming
- 郭溪燎原小学辅导学生记录表
- 教师资格证统考综合素质写作秘笈
- 国外校园绿色建筑研究方向与建设实践
- 15.1 动物运动的方式 课件(北师大版八
- 民用飞机空调系统
- 长安侠文化传统与唐诗的任侠主题
- 《中国近现代史纲要》名词解释
- 11金本《保险学概论》复习资料
- 民用建筑机电安装工程专业施工图图纸会




