网络课程设计实验报告--QQ聊天实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机网络课程设计报告
设计选题网络聊天室
姓名马继鸣
学号 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)