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

正文內(nèi)容

java本科飛鳥局域網(wǎng)聊天工具的設計與實現(xiàn)-資料下載頁

2024-12-07 01:06本頁面

【導讀】產(chǎn)生的聊天工具越來越多,例如,國外的ICQ、國內(nèi)騰訊公司開發(fā)的OICQ。絡編程的強大功能,本次畢業(yè)設計使用Java編寫一個聊天系統(tǒng)。本系統(tǒng)建立在JAVA平臺上,系統(tǒng)的設計使用了面向?qū)ο蠹夹g和面向?qū)ο蟮脑O計原則。系統(tǒng)采用C/S結構,客戶端與客戶端以及客戶端與服務器端之間通過Socket傳送消息。服務器端設計與實現(xiàn)過程中,采用了多線程。技術,可以在單個程序當中同時運行多個不同的線程,執(zhí)行不同的任務。對服務器資源的利用。完成并通過JDBC-ODBC橋訪問數(shù)據(jù)庫。

  

【正文】 在對象數(shù)據(jù)庫中查找是否有與登錄用 戶的用戶名相同的記錄,如果有繼續(xù)驗證,否則退出驗證處理,返回“沒有此用戶”錯誤 用戶登陸程序模塊如下: // 登錄 public boolean Login(Message m) { Message m1 = m。 Connection conn = ()。 try { PreparedStatement ps = (select user_num,user_password from tb_user where user_num = ?)。 (1, ().getUser_num())。 ResultSet r = ()。 if(r!=null){ while(()){ String num = (user_num)。 String pass = (user_password)。 if((().getUser_num())amp。amp。(().getUser_password())){ Object o = (().getUser_num())。 //判斷是否重復登錄 if (o == null) { (登錄成功! )。 // (new GetUserList().getlist())。 ((()))。 if (().isOnline()) { (().getUser_num(), ())。 } (m1)。 ()。 (r)。 (ps)。 (conn)。 return true。 }else{ (該用戶已經(jīng)登錄! )。 (m1)。 ()。 (r)。 (ps)。 貴陽學院畢業(yè)論文(設計) 29 (conn)。 return false。 } } } (請輸入正確的 號和密碼! )。 (m1)。 ()。 (r)。 (ps)。 (conn)。 return false。 }else{ (請輸入正確的 號和密碼! )。 (m1)。 ()。 (r)。 (ps)。 (conn)。 return false。 } } catch (Exception e) { ()。 } return false。 } 4.用戶退出 ( 1)接收退出信息 當用戶退出時,客戶端將會用基于 Socket 的對象輸出流發(fā)送給服務器退出對象。 ( 2) 在線列表中刪除用戶 用戶退出后應該把用戶從在線列表中刪除,否則用戶退出用戶還在在線列表中 , 么 該用戶下次將會無法登錄。 ( 3)更新在線列表 用戶退出后將服務器端監(jiān)控界面的用戶列表更新。否則用戶數(shù)據(jù)將會不同步。 貴陽學院畢業(yè)論文(設計) 30 用戶退出模塊程序: // mun關閉 public void close_mun(Message m) { (().getUser_num())。 (().getUser_num())。 // 向所有客戶端發(fā)送我下線的消息 Message md = new Message()。 (().getUser_num())。 (true)。 // 遍歷所有好友列表的輸出流,將 md全部 發(fā)出 SetString set = ()。 IteratorString ii = ()。 while (()) { ObjectOutputStream oo = (())。 try { (md)。 ()。 } catch (IOException e) { ()。 } } ()。 } // 修改在線狀態(tài)的方法 public void upOnline(Message m) { Message md = new Message()。 (().getUser_num())。 (true)。 // 遍歷所有好友列表的輸出流,將 md全部發(fā)出 SetString set = ()。 IteratorString ii = ()。 while (()) { ObjectOutputStream oo = (())。 try { (md)。 ()。 } catch (IOException e) { ()。 } 貴陽學院畢業(yè)論文(設計) 31 } } public void Online(Message m) { (().getUser_num(), ())。 Message mOnline = new Message()。 SetString s = ()。 IteratorString itt = ()。 ListUser l = new ArrayListUser()。 while (()) { ((()))。 } (l)。 // 遍歷所有好友列表的輸出流,將 mOnline全部發(fā)出 SetString set = ()。 IteratorString ii = ()。 while (()) { ObjectOutputStream oo = (())。 try { (mOnline)。 ()。 } catch (IOException e) { ()。 } } } 5.接收用戶聊天信息 ( 1)接收用戶聊天信息 當用戶發(fā)送聊天信息時,服務端將會收到客戶端用 Socket 傳輸過來的聊天信息對象,然后將其強 制轉(zhuǎn)換為 Chat 對象。 ( 2)接收服務器端的系統(tǒng)消息 當有其他用戶登陸時,系統(tǒng)會給在線的所有用戶發(fā)送用戶登陸信息,并且通過服務器可以給各用戶發(fā)送系統(tǒng)消息。系統(tǒng)消息發(fā)出后,如再有登錄者也可以接收到系統(tǒng)消息。 ( 3)返回給客戶端 當以上信息都封裝成功后,打開與客戶端連接的 Socket 的輸出流,然后再用ObjectOutputStream 對象輸出流包裝后輸出給客戶端。 貴陽學院畢業(yè)論文(設計) 32 // 聊天 public void chat(Message m) { ObjectOutputStream oopToFriend。 oopToFriend = (() + $ + ())。 String mes1 = ()。 String mes2 = ()。 try { // 將客戶端發(fā)過來的信息傳回給信息源,在消息之前加上時間 Calendar c = ()。 int day = ()。 int month = ()。 int year = ()。 int hour = ()。 int minie = ()。 int sec = ()。 // 如果消息為空,就只將時間發(fā)送出去 if (mes1 == null) { mes1 = 我 + + year + + month + + day + + hour + : + minie + : + sec + \n。 } else { mes1 = 我 + + year + + month + + day + + hour + : + minie + : + sec + \n + mes1。 } (mes1)。 Message mtoMyself = m。 // 定義此消息是傳回信息源的 (true)。 (mtoMyself)。 ()。 } catch (Exception ex) { ()。 } if (oopToFriend != null) { // 將消息發(fā)送給目標客戶端,在消息之前加上時間 try { Calendar c = ()。 int day = ()。 int month = ()。 int year = ()。 int hour = ()。 貴陽學院畢業(yè)論文(設計) 33 int minie = ()。 int sec = ()。 // 如果消息為空,就只將時間發(fā)送出去 if (mes2 == null) { mes2 = 來自 + () + + year + + month + + day + + hour + : + minie + : + sec + \n。 } else { mes2 = 來自 + () + + year + + month + + day + + hour + : + minie + : + sec + \n + mes2。 } (mes2)。 // 定義此消息是發(fā)送給信息目的地的 (false)。 (m)。 ()。 } catch (IOException e) { ()。 } } else { Calendar c = ()。 int day = ()。 int month = ()。 int year = ()。 int hour = ()。 int minie = ()。 int sec = ()。 ObjectOutputStream o = (())。 // 判斷目標客戶端是否登錄,若登錄,就發(fā)送一條帶有信息源 號碼的消息給目標客戶端,并將發(fā)來的消息保存在集合中 if (o != null) { Message mm = new Message()。 // 判斷信息源發(fā)送過來的消息是否為抖動,若 是,將未開聊天窗體且抖動的標識設置為真 if (()) { (true)。 } (())。 貴陽學院畢業(yè)論文(設計) 34 try { (mm)。 ()。 } catch (Exception e) { ()。 } } // 如果消息為空,就只將時間發(fā)送出去 if (mes2 == null) { mes2 = 來自 + () + + year + + month + + day + + hour + : + minie + : + sec + \n。 } else { mes2 = 來自 + () + + year + + month + + day + + hour + : + minie + : + sec + \n + mes2。 } (mes2)。 (m)。 } } 第三節(jié) 客戶端程序編寫 程序?qū)⑼ㄟ^ 用戶注冊界面收集用戶的用戶名、密碼、呢稱、個性簽名。 貴陽學院畢業(yè)論文(設計) 35 圖 注冊界面 客戶端用戶注冊信息模塊程序: (new ActionListener() { @SuppressWarnings(deprecation) @Override public void actionPerformed(ActionEvent e) { // 創(chuàng)建網(wǎng)絡連接 try { Socket socket = new Socket(, 10086)。 oop = new ObjectOutputStream(())。 oip = new ObjectInputStream(()
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1