小組成員:張晨 宋浪峯 賀小寬數據庫
項目名稱:聊天系統服務器
小組分工:核心功能:張晨,宋浪峯 界面:賀小寬 調試:張晨,宋浪峯併發
完成設想: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
//該類負責顯示添加好友的一個界面