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

正文內(nèi)容

基于java的聊天室設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(更新版)

2026-01-05 03:41上一頁面

下一頁面
  

【正文】 //把從服務(wù)器獲得消息,顯示到該顯示的聊天界面 (m)。 } } ( 12) ManageClientConServerThread 類的源代碼: package 。 29 private String sender。 } public void setCon(String con) { = con。//表明登錄失敗 String message_m_mes=3。 } } 。 public class User implements { private String userId。 } public void setSendTime(String sendTime) { = sendTime。 private String sendTime。 public class ManageClientConServerThread{ private static HashMap hm=new HashMapString, ClientConServerThread()。 } } } } ( 11) ManageChat 類的源代碼: package 。 } public void run() { while(true) { //不停的讀取從服務(wù)器發(fā)來的消息 try{ ObjectInputStream ois=new ObjectInputStream(())。 import .*。 26 //關(guān)閉 Scoket ()。 (o)。 import .*。 } } } } ( 7) ManageClientThread 類的源代碼: package 。 //Thread tSend。 //import 。 }else{ (2)。 (服務(wù)器接收到用戶 id:+()+ 密碼 :+())。 import .*。 (jpl)。 public static void main(String[] args) { ServerFrame sf=new ServerFrame()。 }catch(Exception ex){ ()。 } //寫一個(gè)方法,讓它顯示消息 public void showMessage(Message m) { String info=()+ 說 :+()+\r\n。 jpl=new JPanel()。 JButton jb。 import .*。 }finally{ //關(guān)閉 try { ()。 } catch (SQLException e1) { // TODO Autogenerated catch block ()。 ()。 (jpf1)。 =1。 =。 GridBagConstraints gc3=new GridBagConstraints()。 =1。 =。 jpf2=new JPasswordField()。 } public Register() { jpl1=new JPanel()。 import .*。 //把聊天界面加入到管理類 ((),chat)。 (300,200)。 (jbl2)。 =1。 =3。 =new Insets(10,10,10,10)。 jb2=new JButton(注冊(cè) )。 jpl2=new JPanel()。 JPanel jpl1。 13 附錄 ( 1)登錄界面源代碼: package 。可以這樣說,用計(jì)算機(jī)來解決繁重而低效的手工管理工作,計(jì)算機(jī)發(fā)展史上的必然。 在學(xué)習(xí)期間,本人還通過網(wǎng)上的各種 JAVA 源碼進(jìn)行學(xué)習(xí)與研究,我原以為這樣的設(shè)計(jì)水平將無法完成畢業(yè)設(shè)計(jì),但當(dāng)掌握了大部分應(yīng)用技巧時(shí),剩下的聊天系統(tǒng)思路的設(shè)計(jì)就顯得不是最大的障礙了。 ( 4) 也沒有詳細(xì)考慮 到 服務(wù)器端對(duì)的 聊天室管理功能。 ( 2)測試方法 根據(jù)工作過程,來啟動(dòng)程序,如果在啟動(dòng)某一程序時(shí)出現(xiàn)了錯(cuò)誤,先查看錯(cuò)誤信息,然后再啟動(dòng)的程序的類里面尋找問題,并多使用 方法來打印一些提示的話語,方便自己知道程序運(yùn)行到了哪一步,是從哪里開始程序沒再運(yùn)行了,通過這樣的測試方法就可以慢慢的找到錯(cuò)誤的根源,從而不斷完善聊天室的功能。 ManageChat 則是將所有用戶的聊天界面放在一個(gè) hashmap 里管理起來,當(dāng)遍歷這個(gè) hashmap 時(shí),就可以將消息顯示在所有用戶的聊天界面了。 類視圖 1 如圖 所示 : 圖 類視圖 1 這是服務(wù)器端的開發(fā), model 層中的類是在后臺(tái)運(yùn)行 的程序, view 層中的類是服務(wù)器界面,啟動(dòng)服務(wù)器其實(shí)是調(diào)用的 Server 類,這個(gè)類才是真正的服務(wù)器。如果是發(fā)送給所有人,就遍歷管理服務(wù)器連接所有人線程的 hashmap,得到連接所有人的線程,將消息發(fā)送給所有人,而客戶端則遍歷管理所有人的聊天界面的 hashmap,得到所有人的聊天界面,將消息發(fā)送到所有人的界面上。 注冊(cè)界面的實(shí)現(xiàn) 注冊(cè)界面的實(shí)現(xiàn)如圖 所示: 圖 注冊(cè)界面 該界面主要用的了 4 個(gè) Jlabel 分別是 4 個(gè)填寫文字的部分,然后一個(gè) JtextField 和 2 個(gè)JpasswordField,用來填寫要注冊(cè)的賬號(hào)和密碼。 客戶端模塊分析 客戶通過 Socket(IAddress,port)建立與服務(wù)器的連接。 ( 2) 用戶可 以注冊(cè)賬號(hào) 。簡單分析一下兩個(gè)方面所要完成的任務(wù),對(duì)設(shè)計(jì)這個(gè)程序來說,等于完成了一半。 主要使用 Sun 公司提供 Java 語言、 jdk 開發(fā)環(huán)境及套接字通信 socket 技術(shù), 并利用 MyEclipse來進(jìn)行開發(fā),來是實(shí)現(xiàn) 對(duì)服務(wù)器端和客戶端之間相互交流 的 功能。前臺(tái)采用的 java 語言采用C/S 架構(gòu)來設(shè)計(jì)聊天室 ,而后臺(tái)則采用 SQL Server2020 創(chuàng)建的數(shù)據(jù)庫和表格來管理用戶的信息。 本文中主要 闡述的是 java 聊天室的設(shè)計(jì)過程,以及聊天功能的實(shí)現(xiàn)。從而客戶與客戶之間以及客戶與服務(wù)器之間可以簡單方便地進(jìn)行通信。服務(wù)器端程序主要負(fù)責(zé)偵聽客戶端發(fā)來的消息,客戶端需登錄到服務(wù)端才可以實(shí)現(xiàn)正常的聊天功能。 客戶端的主要功能如 下: ( 1) 連接到已經(jīng)開啟服務(wù)的服務(wù)端。服務(wù)器采用多線程以滿足多用戶的請(qǐng)求,并通過創(chuàng)建一個(gè) ServerSocket 對(duì)象來監(jiān)聽來自客戶的連接請(qǐng)求,默認(rèn)端口為8888,然后無限循環(huán)調(diào)用 accept()方法接受客戶程序的連接。當(dāng)填寫了正確的賬號(hào)和密碼后點(diǎn)擊登錄按鈕可以進(jìn)入聊天界面,錯(cuò)誤則提示“用戶名或密碼錯(cuò)誤”:點(diǎn)擊注冊(cè)按鈕則可以進(jìn)入注冊(cè)賬號(hào)的界面。 聊天功能的實(shí)現(xiàn) 用戶在聊天界面點(diǎn)擊發(fā)送按鈕后,消息發(fā)送到服務(wù)器,服務(wù)器的消息進(jìn)行分析,如果是私聊,分析出發(fā)送這和接收者后,將 消息轉(zhuǎn)發(fā)給接收者。分好工作區(qū),建好要用到的包,如:界面就寫在名為 view 的包里面,后臺(tái)運(yùn)行的類就寫在 model 包里面等。這里的客戶端連接服務(wù)器的線程類 ClientConServerThread 是用來讀取從服務(wù)器發(fā)來的消息,并顯示數(shù)來的。 聊天室功能的測試 ( 1)工作過程 首先啟動(dòng)服務(wù)器,如果啟動(dòng)成功,會(huì)再控制臺(tái)打印出“在 9999 端口監(jiān)聽”,然后再運(yùn)行用戶登錄的類點(diǎn)擊注冊(cè)賬號(hào),賬號(hào)注冊(cè)成功后再回到登錄界面進(jìn)行登錄,點(diǎn)擊登錄按鈕就可以進(jìn)入聊天室了。 ( 2) 聊天系統(tǒng)缺乏各種屏蔽發(fā)言、 發(fā)送表情 、踢人等功能; ( 3)因?yàn)殡娔X無法連接數(shù)據(jù)源,導(dǎo)致數(shù)據(jù)庫不能被程序使用,所以注冊(cè)功能最終也沒有實(shí)現(xiàn)。 平時(shí)自己也常到其它聊天室進(jìn)行聊天,因此,自己也曾想過以后學(xué)會(huì)了電腦就一定親 自設(shè)計(jì)一款聊天系統(tǒng),如今,總算實(shí)現(xiàn)了自己的夢想。 這次的畢業(yè)設(shè)計(jì)讓我受益匪淺。最后,請(qǐng)?jiān)试S我再一次向畢業(yè)期間無私幫助過我的老師,同學(xué)和朋友表示最衷心的感謝。 public class ClientLogin extends JFrame implements ActionListener { //定義上面的組件 JLabel jbl1。 } public ClientLogin() { jpl1=new JPanel()。 (this)。 =1。 (jbl2, gc2)。 =1。 (jbl1)。 (jpl2,South)。 if((u)) { Chat chat=new Chat(())。 import .*。 public static void main(String[] args) { // TODO Autogenerated method stub Register rgt=new Register()。 jpf1=new JPasswordField()。//創(chuàng)建約束對(duì)象 (gbl)。 =。 17 (jtf, gc2)。 =new Insets(0,0,10,10)。 =3。 (jbl3)。 (300,260)。 } try { sm=()。 } } catch (ClassNotFoundException e1) { // TODO Autogenerated catch block 19 ()。 import .*。 JTextField jtf。 (this)。 (true)。 (m)。 JButton jb1,jb2。 (jb2)。 import .*。 User u=(User)()。 //啟動(dòng)與該客戶端保持通信的線程 ()。 import .*。 Message m=(Message)()。 } }catch(Exception e){ ()。 import .*。 ObjectOutputStream oos=new ObjectOutputStream(())。 }else{ b=false。 import .*。 } //構(gòu)造函數(shù) public ClientConServerThread(Socket s) { =s。 } }catch(Exception e){ ()。 import 。 private String con。 } public String getSendTime() { return sendTime。//普通信息包 } ( 15) User 類的源代碼: /** * 這是用戶信息類 */ package
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1