【正文】
ObjectOutputStream(())。 import .*。 ()。 jb1=new JButton(啟動服務(wù)器 )。 import .*。 } Override public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub if(()==jb) { //如果用戶點擊了發(fā)送按鈕 Message m=new Message()。 (jb)。 String ownerId。 import .*。 } catch (SQLException e1) { // TODO Autogenerated catch block ()。 while(()) { String userId=(1)。 } Override public void actionPerformed(ActionEvent e) { // TODO Autogenerated method stub Connection ct = null。 (jpf2)。 =。 GridBagConstraints gc4=new GridBagConstraints()。 =1。 (jbl2, gc2)。 =1。 (this)。 jbl1=new JLabel(注冊聊天賬號 ,)。 public class Register extends JFrame implements ActionListener { JPanel jpl1,jpl2。 } else { (this,用戶名密碼錯誤 )。 (true)。 (jbl3)。 =3。 =new Insets(0,0,0,10)。//下一個組件將是這行的最后一個組件 (jbl1, gc1)。 湖北大學(xué)知行學(xué)院本科畢業(yè)論文(設(shè)計) 14 GridBagLayout gbl=new GridBagLayout()。 jbl2=new JLabel(賬號 ,)。 JTextField jtf。 import 。在這次的畢業(yè)設(shè)計中,我曾遇到了許多困難,而在克服這些困難的過程中,我的各方面的能力又有了很大的提高,使我的理論知識更好的 與實踐相結(jié)合,增強了專業(yè)技能的可實踐性。原先認為不可能的事,我發(fā)現(xiàn),如果有不畏困難的信心和肯鉆研的勇氣,就一定會完成,甚至達到意想不到的效果。 (二) 經(jīng)驗和感想 ( 1)通過這次畢業(yè)設(shè)計獲得的寶貴經(jīng)驗 經(jīng)驗一:通過本次課題,我對 C/S 架構(gòu)的設(shè)計流程有了一個更深刻的認識,清晰的感覺到了服務(wù)器端與客戶端之間的交互過程, 經(jīng)驗二:這次的課題讓我對以前掌握的不太好的 Socket 編程,輸入輸出流的使用和多線程的使用有了更好的了解。 湖北大學(xué)知行學(xué)院本科畢業(yè)論文(設(shè)計) 10 結(jié) 論 (一) 畢業(yè)設(shè)計的總結(jié)和展望 本聊天室實現(xiàn)了簡單的實時聊天功能,經(jīng)過細心的調(diào)試和排錯解決了絕大部分的問題。它的存在使得客戶端與服務(wù)器端的信息交互成為了可能。 ManageClientThread類是管理服務(wù)器連接客戶端線程的類,這個類用 HashMap 將服務(wù)器連接客戶端的所有線程管理了起來,方便調(diào)用。 JDK 可以從 SUN 公司的網(wǎng)站 或國內(nèi)一些常用的資料下載網(wǎng)站免費下載而得。然后 2 個按鈕放在了第二個 jpanel 中,放于 jframe 的南邊??蛻舳巳缓笙蚍?wù)器發(fā)送消息,服務(wù)器收到來自客戶的請求后,針對不同的消息處理請求。 ( 4) 用戶可以向所有人或某一個人發(fā)送消息。 ( 2) 用戶可以配置服務(wù)端的偵聽端口,默認端口為 9999。而對聊天室的開發(fā)也可以更好的理解 C/S 架構(gòu)開發(fā)的原理,能夠更加熟練的使用多線程、異常處理、 Socket 編程、輸入輸出流的使用。 【關(guān)鍵詞】 網(wǎng)絡(luò) 聊天室 即時通信 JAVA III Chat room Design with realization based on JAVA Abstract With the rapid development of work, the work has bee in a major way for us to understand the world . So with the work and inevitable has some software is also more and more, and can realize instant munication chat software is also es and loved by uses. So MSN, ICQ, and other large chat software has bee a part of the people’s life for work. This article mainly elaborated in the chat room of the design process is Java, and the realization of the function of chat. The front desk of the Java language using C/S architecture to design a chat room, and the back desk, using the database and SQL Server2020 create form to manage customer information. Finally, using the bination of these two tools to plete the design of the chat room. 【 Key words】 work Chat room Instant munication JAVA 湖北大學(xué)知行學(xué)院本科畢業(yè)論文(設(shè)計) 1 緒論 隨著互聯(lián)網(wǎng)逐步普及,人們的 生活和工作也越來越離不開信息網(wǎng)絡(luò)的支持,而聊天室是人們最常見,最直接的網(wǎng)上交流的方式。因此伴隨著網(wǎng)絡(luò)而必然產(chǎn)生的一些軟件也越來越多,而能夠?qū)崿F(xiàn)即時通信的聊天軟件也是隨之誕生,且深受用戶們喜愛。服務(wù)器端的主要 實現(xiàn) 在特定端口上進行偵聽,等待客戶端連接; 用戶可以配置服務(wù)端的偵聽端口,默認端口為 9999;向已經(jīng)連接 到服務(wù)端的用戶發(fā)送系統(tǒng)消息。而本人也學(xué)習(xí)過 JAVA 語言,對網(wǎng)絡(luò)編程也較有興趣,為了更好的考驗自己對 JAVA 語言的掌握程度,本人就決定以《 Java 聊天室》為畢業(yè)設(shè)計,希望通過這一次能進一步提高本人的網(wǎng)絡(luò)開發(fā)編程的能力。 以上就是服務(wù)器端 最主要任務(wù)。 湖北大學(xué)知行學(xué)院本科畢業(yè)論文(設(shè)計) 4 模塊具體分析 模塊分析示意圖如圖 所示: 圖 模 塊分析 服務(wù)器端模塊分析 服務(wù)器與客戶間通過套接口 Socket(TCP)連接。用到了 1個 JTextFilet,1 個 JpasswordField,和 2 個 Jbuttton(登錄和注冊)。 服務(wù)器界面的實現(xiàn) 服務(wù)器界面的實現(xiàn)如圖 所示: 圖 服務(wù)器界面 該界面只用到了 2個 Jbutton,用來啟動和關(guān)閉服務(wù)器。 ① .在環(huán)境變量中新建名為 classpath 的環(huán)境變量(如已經(jīng)存在則只要修 改),值為: E:\Program Files\Java\\lib ② .classpath 指明 Java 虛擬機要裝載類的路徑, “.” 表示當(dāng)前目錄 ③ .在環(huán)境變量中新建 名為 path 的環(huán)境變量(如已經(jīng)存在則只要修改),值為: E:\Program Files\Java\\jre\bin ④ .path 指明了操作系統(tǒng)查找 JDK 工具如 javac、 java 等文件的路徑 Sun 公司為程序開發(fā)者提供了編譯、測試、執(zhí)行程序等一套完備的工具體系,它們被集中存放在主目錄的 bin 目錄下。而 ClientUser 類是客戶端用戶類,當(dāng)用戶點擊登錄是會調(diào)用這個類,然后由這個類調(diào)用 ClientConServer 類 。 然后是實現(xiàn)各個界面上的控件的功能和客戶端與服務(wù)器的鏈接功能,先完成服務(wù)器,設(shè)置端口號,完成啟動服務(wù)器的功能;接著就是客戶端連接服務(wù)器的功能,再完成服務(wù)器對消息的驗證和對線程的創(chuàng)建和管 理。本聊天系統(tǒng)程序?qū)τ诔跎娲祟I(lǐng)域的畢業(yè)設(shè)計課題來說,尤其在開始初期,感覺邏輯復(fù)雜,難以控制,因此至今還有許多未能解決的缺陷。 ( 2)完成畢業(yè)設(shè)計的感想 Java 聊天室作為畢業(yè)設(shè)計,是本人目前做過的最大的程序。在此,我要向他們表示衷心的感謝。通過這次的畢業(yè)設(shè)計,我真正了解了軟件工程設(shè)計的整個過程,既鞏固了以前的理論知識,也為我以后的工作奠定了良好的基礎(chǔ)。 import .*。 JButton jb1,jb2。 jpf=new JPasswordField()。 =。 =1。 GridBagConstraints gc3=new GridBagConstraints()。 =。 (jb2)。 (().trim())。 } } } ( 2)注冊界面的源代碼: package 。 湖北大學(xué)知行學(xué)院本科畢業(yè)論文(設(shè)計) 16 JPasswordField jpf1,jpf2。 jbl4=new JLabel(確認密碼 ,)。 GridBagLayout gbl=new GridBagLayout()。//下一個組件將是這行的最后一個組件 (jbl1, gc1)。 =new Insets(0,0,10,10)。 =3。 =1。 (jbl2)。 (jpl1,Center)。 //得到連接數(shù)據(jù)源 try { ct=(jdbc:odbc:mychat)。 }else if((()).equals(())) { (this,密碼不一致,請重新注冊! )。 import .*。 public class Chat extends JFrame implements ActionListener { public static void main(String[] args) { //Chat chat=new Chat()。 jtf=new JTextField(15)。 (ownerId)。 ()。 import .*。 (this)。 }else if(()==jb2){ ()。 while(true) { //阻塞,等待連接 Socket s=()。 //單開一個線程與客戶端保持通信 SerConClientThread scct=new SerConClientThread(s)。 import .*。 } public void run() { while(true) { (===============)。 ObjectOutputStream oos=new ObjectOutputStream(())。 } } ( 8) ClientConServer 類的源