网络课程设计实验报告--QQ聊天实现

  • 格式:doc
  • 大小:257.50 KB
  • 文档页数:21

下载文档原格式

  / 21
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 servers=new 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 maps=new HashMap();

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)