本科毕业论文-基于JAVA的聊天系统的设计与实现(4)

2019-03-03 14:40

内蒙古农业大学学士学位论文 12

3 系统分析与设计方案 3.1 聊天系统的总体设计要点

聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的

因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:

1、实现思想

在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。

2、服务器端工作流程

服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在服务器上聊天了。

3、客户端工作流程

客户端程序相对简单,只需要建立一个Socket与服务器端连接,成功后通过这个Socket来发送和接收数据就可以了。

3 .2 聊天系统的设计步骤及功能模块划分

聊天系统工作原理图

内蒙古农业大学学士学位论文 13

3.3 聊天系统各功能模块

(1)服务器程序模块

服务器与客户间通过套接口Socket(TCP)连接。在java中使用套接口相当简单,Java API为处理套接口的通信提供了一个类java.net.Socket,使得编写网络应用程序相对容易。服务器采用多线程以满足多用户的请求,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为9527,然后无限循环调用accept()方法接受客户程序的连接。

服务器线程源码: package qq.server;

import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.*;

import qq.dao.hibernate.IServiceDao; import qq.entity.*;

public class ServerController {

private User user;

内蒙古农业大学学士学位论文 14

private Socket s; private IServiceDao dao; private ObjectInputStream ois; private ObjectOutputStream oos; private OnlineUser onlineUser;

public ServerController(Socket s) { }

public void handle() throws Exception {

ois=new ObjectInputStream(s.getInputStream()); oos=new ObjectOutputStream(s.getOutputStream()); onlineUser=new OnlineUser(ois,oos); while(true){

Request req=(Request)ois.readObject(); ois.read();

RequestType type=req.getType(); if(type.equals(RequestType.exit)){

exitHandle(); break;

loginHandle(req); registerHandle(); offlineHandle(); break;

changeInformationHandle(); modifypasswdHandle(req);

super();

dao=ServerMainClass.userDao; this.s = s;

}else if(type.equals(RequestType.login)){ }else if(type.equals(RequestType.register)){ }else if(type.equals(RequestType.offline)){

}else if(type.equals(RequestType.changeInformation)){ }else if(type.equals(RequestType.modifypasswd)){

内蒙古农业大学学士学位论文 15

}

}

}else if(type.equals(RequestType.sendMessage)){ }

sendMessageHandle(req); receiveFileHandle(req); sendFileHandle(req);

}else if(type.equals(RequestType.receiveFile)){ }else if(type.equals(RequestType.sendFile)){

private void modifypasswdHandle(Request req) { }

private void changeInformationHandle() {

try {

User user=(User)ois.readObject(); Long id=Long.parseLong(req.getData(\String oldpwd=req.getData(\String newpwd=req.getData(\

Response res=new Response(RequestType.modifypasswd); try { }

dao.updatePwd(id, oldpwd, newpwd); res.setData(1); try { } try { }

oos.writeObject(res); e1.printStackTrace(); } catch (IOException e1) {

oos.writeObject(res); e.printStackTrace(); } catch (IOException e) {

} catch (RuntimeException e) {

内蒙古农业大学学士学位论文 16

}

}

Response res=new Response(RequestType.changeInformation); try { }

e.printStackTrace(); e.printStackTrace();

dao.updateUser(user);

res.setData(1);//修改成功返回值带一个整形值 oos.writeObject(res); oos.flush();

oos.writeObject(res);//失败则返回值不带参数 oos.flush();

e.printStackTrace();

} catch (RuntimeException e) {

} catch (IOException e) {

} catch (ClassNotFoundException e) {

private void exitHandle() { }

//发送文件

private void sendFileHandle(Request req) {

try { }

User u=(User)ois.readObject();

e.printStackTrace(); try { }

s.close();

e.printStackTrace(); } catch (IOException e) {

// // // // // //

}

} catch (Exception e) {


本科毕业论文-基于JAVA的聊天系统的设计与实现(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:美术教案一年级上册(浙美版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: