小组成员:张晨 宋浪峰 贺小宽数据库
项目名称:聊天系统服务器
小组分工:核心功能:张晨,宋浪峰 界面:贺小宽 调试:张晨,宋浪峰并发
完成设想:eclipse
运行环境:eclipse函数
使用语言:Java语言。线程
使用数据库:SQL server 数据库。设计
功能需求调试
(1)客户端:提供登陆、主窗体及聊天等界面及对应的业务,向服务器发送相应的服务请求,并接受相应的处理结果。客户端只负责连接远程服务器,并发出相应的服务请求,不进行核心业务的处理。具体的处理交给服务器,而客户端只接收服务器处理的结果并显示给用户。
orm
(2)服务器:监控登陆信息及在线用户信息,接收客户端的服务请求,并作相应的处理,而后将处理结果发送给客户端。服务器负责处理核心的业务,并负责链接数据库,保存和读取数据。
server
(3)客户端TCP通讯设计
设计ClientToServer类,该类实现了Runnable接口,是一个线程。
主要方法:
[1] boolean sendLoginInfoToServer(User u) :登陆请求。
[2] void getProgerties():获取配置文件中的服务器IP地址信息。
[3] void logout(): 下线,通知服务器该用户下线。
[4]inttoRegister(UserInfoBean user):新用户注册,返回QQ号。
[5] void noticeUpdate():通知刷新好友信息。
服务器TCP通讯设计
1)设计ServerThread线程类:处理用户链接服务器请求,并为其启动单独的服务(Server)线程。
主要方法:
[1] void run(): 重写线程类Thread的方法,不断的等待客户端的链接请求。
[2] void pauseThread():暂停服务。
[3] void reStartThread():恢复服务。
2)设计Server线程类:处理每一个上线用户个各类服务请求。
主要方法:
[1] void run():不断的等待用户的请求信息,并判断请求类型。
[2] void login():处理用户登陆。
[3] void registerNewUser():处理注册新用户
[4] void queryUser():处理查询用户。
[5] void addFriend():添加好友。
[6] void deleteFriend():删除好友。
[7] void updateOwnInfo():更新本身的信息。
[8] void logout():下线。
[9] void queryFriend():查询好友信息。
2.1.3.2基于UDP的通讯
在进行用户聊天时,采用基于UDP的通讯协议。
客户端UDP通讯设计
设计ClientToServerThread线程类:负责UDP通讯。
主要方法:
[1]void run():循环等待监听发来的数据。
[2]void getPropertieInfo():获取通讯的服务器的IP地址及本机通讯端口。
[3]void sendData(byte buffer[]):发送数据。
[4]void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。
[5]void ObjectToByte(Object obj):将Object型数据转为Byte型。
[6]void closeSocket():关闭收发数据报套接字。
服务器UDP通讯设计
设计ClientToServerThread线程类:负责UDP通讯,主要是转发用户发送的信息,并保存用户的聊天记录。
主要方法:
[1]void run():循环等待监听发来的数据。
[2]void getPropertieInfo():获取通讯的服务器的IP地址及本机通讯端口。
[3]void sendData(byte buffer[]):发送数据。
[4] void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。
[5]void ObjectToByte(Object obj):将Object型数据转为Byte型。
[6]void closeSocket():关闭收发数据报套接字。
数据访问层的实现
2.1.4.1 打开数据库链接类(ConnectionFactory)
[1]void getPropertiesInfo():从配置文件中获取数据库链接信息。
[2]Connection getConnection():打开数据库链接。
2.1.4.2 关闭数据库链接类(DbClose)
[1]void getPropertiesInfo():从配置文件中获取数据库链接信息。
[2]void close(Connection conn):关闭数据库链接。
[3]void close(PreparedStatement pre):关闭数据库语句
[4]void close(ResultSet rs):关闭结果集
[5]voidclose(Connection conn, PreparedStatement pre, ResultSet rs)
2.1.4.3 数据操做类(Dml)
[1]void insert(UserInfoBean user):增长新用户,插入信息。
[2]void update(UserInfoBean user):更新用户信息。
[3]void delete(int qq):删除信息。
(搜索)
(4)界面层的实现
登陆界面
JLoginFrm登录窗体主要用于用户登录,注册和找回密码。
内部类:
BackgroundPanel 继承于JPanel主要用于设置窗体背景图片
主要函数:
1.actionPerformed(ActionEvent e)主要对窗体的按键监听
2.JLoginFrm()构造函数,控件的初始化。
注册界面
JRegisterFrm继承与JFrame主要用于用户基本信息的注册。
主要函数:
2.String getBir()以1-1月-2014形式获得用户的生日
3.getUserInfo()获得用户的全部信息
聊天界面
ChatPanel主要用于用户间的聊天通讯
主要函数:
一、setMessage()设置当前显示全部会话的面板,不可编辑
二、setSendMessage()设置当前发送消息的面板,可编辑
三、sendMessage()发送消息,讲发送消息面板的内容发送到会话面板和对方。
四、sendFile()传输文件
五、sendImage()发送图片
六、startShake()发送震动消息
主界面
public class findFriendFrm extends JFrame
//该类负责查找好友界面
[1] public String getName()//得到找到好友的昵称或者QQ号
[2] public class InformationFrm extends JFrame
//该类负责显示好友信息的界面
用户信息界面
好友信息界面主要是将从服务端读取的好友的我的信息显示出来。
[1] publicInformationFrm(UserInfoBean userInfo)
//在该构造方法中必须传入一个UserInfoBean 的对象,此对象中包含了好友的全部信息
[2] public class selectGroupFrm extends JFrame
//该类负责显示添加好友的一个界面