聊天程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊天程序相关的知识,希望对你有一定的参考价值。

开发环境

运行环境:eclipse

使用语言:Java语言。

使用数据库:SQL server 数据库。

 

功能需求

 

 

1)客户端:提供登录、主窗体及聊天等界面及对应的业务,向服务器发送相应的服务请求,并接受相应的处理结果。客户端只负责链接远程服务器,并发出相应的服务请求,不进行核心业务的处理。具体的处理交给服务器,而客户端只接收服务器处理的结果并显示给用户。

技术分享

 

 

2)服务器:监控登录信息及在线用户信息,接收客户端的服务请求,并做相应的处理,然后将处理结果发送给客户端。服务器负责处理核心的业务,并负责连接数据库,保存和读取数据。

 

技术分享

 

 

 

 

 

客户端TCP通信设计

  设计ClientToServer类,该类实现了Runnable接口,是一个线程。

主要方法:

[1] boolean sendLoginInfoToServer(User u) :登录请求。

[2] void getProgerties():获取配置文件中的服务器IP地址信息。

[3] void logout(): 下线,通知服务器该用户下线。

[4]inttoRegister(UserInfoBean user):新用户注册,返回QQ号。

[5] void noticeUpdate():通知刷新好友信息。

B. 服务器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的通信协议。

A.客户端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():关闭收发数据报套接字。

B. 服务器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):删除信息。

(搜索)

 

界面层的实现

登录界面

JLoginFrm登陆窗体主要用于用户登陆,注册和找回密码。

内部类:

BackgroundPanel 继承于JPanel主要用于设置窗体背景图片

主要函数:

1.actionPerformed(ActionEvent e)主要对窗体的按键监听

2.JLoginFrm()构造函数,控件的初始化。

 

注册界面

JRegisterFrm继承与JFrame主要用于用户基本信息的注册。

主要函数:

1. Void setDay()根据不同的年份和月份设置天数

2.String getBir()以1-1月-2014形式得到用户的生日

3.getUserInfo()得到用户的所有信息

 聊天界面

ChatPanel主要用于用户间的聊天通信

主要函数:

1、setMessage()设置当前显示所有会话的面板,不可编辑

2、setSendMessage()设置当前发送消息的面板,可编辑

3、sendMessage()发送消息,讲发送消息面板的内容发送到会话面板和对方。

4、sendFile()传输文件

5、sendImage()发送图片

6、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

//该类负责显示添加好友的一个界面

 

以上是关于聊天程序的主要内容,如果未能解决你的问题,请参考以下文章

在windows环境下用C++完成一个hello/hi网络聊天程序

iOS环信即时聊天

基于TCP的聊天系统

基于TCP的聊天系统

基于TCP的聊天系统

视频零基础学Android开发:蓝牙聊天室APP