freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)論文--基于java的android即時通訊軟件(已改無錯字)

2022-09-11 11:25:56 本頁面
  

【正文】 ChatRoom用戶窗體啟動Login用戶窗體監(jiān)聽Close:客戶端用戶信息數據。:客戶端注冊界面及交互。:客戶端登錄界面及交互。:負責客戶端聊天窗體及交互。:客戶端好友信息界面及交互。:客戶端自己信息界面及交互。:負責客戶端好友查找界面及交互。:客戶端在線用戶界面與交互。:客戶端連接服務器及與服務器進行交互。:客戶端主界面,負責各項窗體操作和數據分配及交互。4 詳細設計 系統(tǒng)流程圖 系統(tǒng)總體流程圖圖 41 系統(tǒng)總體流程圖開始啟動服務器判斷啟動信息啟動客戶端判斷登錄信息登錄服務器退出服務器注冊用戶結束否是是 系統(tǒng)客戶端流程圖圖 42 客戶端流程圖 編寫服務器端程序 問題陳述 1. 能過接收用戶注冊信息并保存。 2. 能夠允許注冊過的用戶登錄聊天界面。 3. 能夠與在線好友進行自由聊天。 4. 服務器運行在自定義的端口 60005 上。 5. 服務器監(jiān)控用戶列表和對用戶消息進行轉發(fā)。 6. 服務器對用戶的請求作出處理。 7. 服務器對在線下線列表進行更新。 解決方案 后臺數據庫設計開始客戶端登錄判斷主界面聊天界面 好友信息界面 個人信息界面退出結束基于服務器跨平臺運行的架構,服務器的后臺數據庫使用了 SQL Server2022。(1)userInfo 表:userInfo 表此表主要包含了用戶帳戶基本信息。即時通訊系統(tǒng)采用賬戶、密碼的登錄方式,給每個用戶生成一個唯一 ID 來做系統(tǒng)內部的用戶標識。(2)friend 表friend 表此表主要包含了用戶好友 ID 關系信息。 用戶注冊 首先創(chuàng)建一個字符串連接并寫入查詢命令,利用 dataset 保存臨時數據,留作后面注冊時用。 客戶端通過 請求注冊,填寫注冊信息,并驗證各項信息格式是否符合規(guī)定,如果不符合規(guī)定格式,則進行提示重新填寫,最后將請求信息發(fā)送給服務器端。下面是注冊驗證賬戶代碼: 服務器端得到注冊請求會將對象輸入流轉化為文件輸出流,并反饋給客戶端??蛻舳说玫阶孕畔⒑髸谇芭_填寫注冊信息,然后創(chuàng)建文件輸出流,再用對象輸出流包裝后寫入本地文件將其持久化。最后關閉對象輸出流和文件輸入流。// 將向量中的類寫回文件FileOutputStream file = new FileOutputStream(fList)。ObjectOutputStream objout = new ObjectOutputStream(file)。(vList)。 將用戶注冊成功或失敗的信息用打印流包裝 Socket 以后,輸出給客戶端注冊結果的詳細信息。// 發(fā)送注冊成功信息( + 注冊成功)。Date t = new Date()。log(用戶 + + 注冊成功, + 注冊時間:+ () + \n)。 Socket 連接 當以上的程序都正常運行后,需要關閉 Socket 連接,否則將會浪費服務器與客戶端之間的資源。 用戶登陸 打開用戶數據庫文件“”,將用戶數據對象集載入內存,以供下面的程序使用。// 讀文件FileInputStream file3 = new FileInputStream()。ObjectInputStream objInput1 = new ObjectInputStream(file3)。vList = (Vector) ()。 在對象數據庫中查找是否有與登錄用戶的用戶名相同的記錄,如果有繼續(xù)驗證,否則退出驗證處理,返回“沒有此用戶”錯誤用戶登陸程序模塊如下:if (()) {find = 1。if (!()) {(密碼不正確)。break。} else {// 判斷是否已經登錄int login_flag = 0。for (int a = 0。 a ()。 a++) {String _custName = ((Customer) userOnline.elementAt(a)).custName。if ((_custName)) {login_flag = 1。break。}}if (() = 50) {(登錄人數過多,請稍候再試)。break。 用戶退出 當用戶退出時,客戶端將會用基于 Socket 的對象輸出流發(fā)送給服務器退出對象。 用戶退出后應該把用戶從在線列表中刪除,否則用戶退出用戶還在在線列表中,那么該用戶下次將會無法登錄。 用戶退出后將服務器端監(jiān)控界面的用戶列表更新。否則用戶數據將會不同步。用戶退出模塊程序:public void serverExit() {Exit exit = new Exit()。exit = (Exit) obj。removeUser(exit)。// chenminif (()) { = 。}Date t = new Date()。log(用戶 + + 已經退出, + 退出時間: + ())。freshServerUserList()。} 接收用戶聊天信息 當用戶發(fā)送聊天信息時,服務端將會收到客戶端用 Socket 傳輸過來的聊天信息對象,然后將其強制轉換為 Chat 對象。 分析聊天信息對象的聊天內容,用語言過濾類將非法字符過濾掉。語言過濾的時候將會打開“”文件,不允許出現的關鍵詞將會存儲在文件中,關鍵字之間以逗號分割。當聊天內容中出現要過渡的關鍵字是將會被系統(tǒng)屏蔽,而聊天內容 當有其他用戶登陸時,系統(tǒng)會給在線的所有用戶發(fā)送用戶登陸信息,并且通過服務器可以給各用戶發(fā)送系統(tǒng)消息。系統(tǒng)消息發(fā)出后,如再有登錄者也可以接收到系統(tǒng)消息。 當以上信息都封裝成功后,打開與客戶端連接的 Socket 的輸出流,然后再用 ObjectOutputStream 對象輸出流包裝后輸出給客戶端。public void serverChat() {// 將接收到的對象值賦給聊天信息的序列化對象Chat cObj = new Chat()。cObj = (Chat) obj。// chenmin = ()。chatLog(cObj)。// 將聊天信息的序列化對象填加到保存聊天信息的矢量中((Chat) cObj)。return。} 客戶端程序編寫 程序將通過 用戶注冊界面收集用戶的用戶名、密碼、年齡、電子郵箱。如圖 47客戶端用戶注冊信息模塊程序: //連接到服務器 Socket toServer。 toServer = new Socket(strServerIp,1001)。 ObjectOutputStream streamToServer=new ObjectOutputStream (())。 //寫客戶詳細資料到服務器socket ((Register_Customer)data)。 //讀來自服務器socket的登陸狀態(tài) BufferedReader fromServer=new BufferedReader(new InputStreamReader(()))。 String status=()。 //顯示成功消息 JOptionPane op=new JOptionPane()。 (null,status)。 if((+注冊成功 )) { ()。 ()。 ()。 ()。 ()。 } 用戶登錄 收集用戶登錄信息程序將通過 用戶登錄界面收集用戶的用戶名、密碼,如圖圖 415 收集用戶登錄信息圖// 接受客戶的詳細資料……………………………try {// 連接到服務器Socket toServer。toServer = new Socket(strServerIp, 1001)。ObjectOutputStream streamToServer = new ObjectOutputStream(())。// 寫客戶詳細資料到服務器socket((Customer) data)。// 讀來自服務器socket的登錄狀態(tài)BufferedReader fromServer = new BufferedReader(new InputStreamReader(()))。String status = ()。if ((登錄成功)) {new ChatRoom((String) , strServerIp)。()。// 關閉流對象()。()。()。} else {(null, status)。()。()。()。}} // login()結束 聊天室 當用戶登錄成功后,用戶的登錄界面將會隱藏,然后創(chuàng)建用戶聊天室窗口,在界面的標題欄將會顯示當前登錄用戶的用戶名,以防止一個機器上的用戶開多個賬號進入聊天室后分不清哪個窗口是哪個用戶登錄的,界面第一行將顯示當前在線人數。位于界面正中的兩個控件分別是 List 和 TextBox 用來顯示當前服務器上的在線會員名單列表和公共
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1