【正文】
ResultSet rsMessage=(JNUM)。 ResultSet rs=(JNUM)。i()。 } } 服務端單線程上線處理代碼 下邊是服務器端上的單線程的處理代碼,主要通過網(wǎng)絡流來讀取客戶端發(fā)送的消息,然后將消息分解,用來區(qū)分消息的類型,譬如是群消息還是個人消息等。 } } Catch(IOException e) { (Erro:+e)。i++) //陌生人的信息 { jchatExist=(JICQChatFrame).get(i)。 } } if(isExistFrame==0)//聊天窗口沒有打開,新建一個窗口 { JICQChatFrame jchat=new JICQChatFrame(p,this)。 else p=null。下邊是用戶交互的用例圖。 提交注冊資料注冊服務器驗證結果JI C Q 使用者注冊 JI C Q號碼用例 圖 6 注冊用例交互圖 下邊 是用戶注冊的活動圖。 。 系統(tǒng)配置要求 推薦配置如下 : CPU2G 以上 , 內存 512 以上 ,運行平臺基于 Windows 平臺。幸運的是, Eclipse 附帶了一個標準的插件集,包括 Java 開發(fā)工具( Java Development Tools, JDT)。 SWING 界面設計: java 的擴展包,其中包括眾多的控件以及豐富的控件操作功能,使用戶可以簡單的利用它畫出應用程序的界面,結合 帶的絕對定位類包,可以設計出非常好看的用戶界面。通過 TCP 協(xié)議傳輸,得到的是一個順序的無差錯的數(shù)據(jù)流。在這種情況下,一個 TCP連接只能和固定的連接方通訊,而 UDP應用本身就可以 接受不同數(shù)據(jù)來源的數(shù)據(jù)包,所以在 NAT轉換的時候能夠完成兩個客戶端之間的通訊,從而達到了客戶端直接通訊的目的。其根本原因是 OICQ使用了 UDP協(xié)議,這樣用戶之間的通訊自己完成就減少了服務器的負擔。當你和你的 OICQ伙伴進行聊天時,如果你和對方的連接比較穩(wěn)定,你和他的聊天內容都是以 UDP的形式,在計算機 之間傳送。 該系統(tǒng)設計的意義 伴隨著 當今互聯(lián)網(wǎng)迅速 發(fā)展 ,網(wǎng)上通訊成為一種必不可少的 通訊 習慣,該系統(tǒng)的設計 就 是為了實現(xiàn) 在 互聯(lián)網(wǎng)上的即時通訊,它是利用當今最為流行的java 編程語言來 實現(xiàn) 即時通訊工具的雛形,同時 在系統(tǒng)開發(fā)過程中所用的 都是java 常用的技術或者難點,比如用 java 的 swing 怎么去做一個界面美觀的應用程序、 java 的網(wǎng)絡編程技術 的原理與應用 、以及 如何根據(jù) J2EE 規(guī)范 去 開發(fā)一個基于 Jsp 和 Servlet 的 Web 應用 等關鍵技術。運行時系統(tǒng)在方法的調用棧中查找,從生成例外的方法開始進行回朔,直到找到包含相應例外處理的方法為止,這一個過程稱為捕獲 (catch)一個例外。 該系統(tǒng)具有 相對 比較漂亮的界面以及類似于 的很多功能,比如可以和好友進行交流以及離線發(fā)送與好友管理、可以加入不同的群,即時發(fā)送、即時回復等功能 。力圖使 系統(tǒng)具有安全、高效、實用、支持 在不同系 統(tǒng)平臺運行 等特點。 關鍵詞 : 即時通訊 ; 多線程 ; SOCKET 編程; JSP Design and Development of a Simple Instant Communication Tool Abstract Instant Message is currently the most popular way to municate on the Inter,so various Instant Messaging software are continuously appearing。 技術 背景 技術上采用 sun 公司的 java 語言,該語言有很多有點,比如多線程、網(wǎng)絡流概念、異常捕獲處理、安全性以及速度與性能等方面,并且具有可以一次編寫、到處運行的跨平臺優(yōu)點。 所以, java 的例外處第 2 頁 共 30 頁 理使非常方便的。通過設計和開發(fā)該系統(tǒng), 使自己所學的理論 知識 得到實踐應用, 也對即時通訊軟件的通訊原理有了比較深刻的認識,大大的提高了自己的動手能力和解決問題的能力, 為今后工作打下堅實的基礎。如果你和對方的連接不是很穩(wěn)定 , 服務器將為你們的聊天內容進行 “中轉 ”。那么到底原理是什么樣的,為什么 TCP應用就不能達到這一要求。 總的來說, OICQ 的應用在客戶端方面符合即時通訊系統(tǒng)的模型。發(fā)送方和接收方的成對的兩個 socket 之間必須建立連接,以便在 TCP 協(xié)議的基礎上進行通信,當一個 socket(通常都是 server socket)等待建立連接時,另一個 socket 可以要求進行連接,一旦這兩個 socket 連接起來,它們就可以進行第 4 頁 共 30 頁 雙向數(shù)據(jù)傳輸,雙方都可以進行發(fā)送或接收操作。 JSP與 SERVLET技術: JSP和 SERVLET是在 j2ee平臺下開發(fā) WEB應用的基礎, JSP是由 SUN公司倡導 眾多公司參與一起建立的一個動態(tài)網(wǎng)頁標準技術, JSP技術為建立具有動態(tài)生成內容的 WEB應用提供了一種簡便而且功能強大的途徑,它可以快速開發(fā)出與平臺無關的基于 WEB的應用 , JSP是更高級的 SERVLET,在運行的時候 JSP先被轉化為 SERVLET。 雖然大多數(shù)用戶很樂于將 Eclipse 當作 Java IDE 來使用,但 Eclipse 的目標不僅 限于此。 客戶端需要安裝 java 虛擬機, 同時 還 要 有 JICQ 的客戶端程序。 : 。 第 10 頁 共 30 頁 圖 7 用戶注冊活動圖 登錄模塊設計 該模 塊主要給注冊成功的用戶提供一個登錄界面,用戶根據(jù)自己注冊的帳號信息可以與服務器交互, 如果提供的信息通過服務器的驗證便可以 成功的登錄系統(tǒng), 成功 登錄系統(tǒng)之后,可以進行一些操作,比如和好友聊天等, 使用該模塊之前必須安裝一個客戶端。 JI C Q 用戶之間信息交互好友申請好友添加驗證JI C Q 用戶 A發(fā)送信息JI C Q 用戶 B驗證 圖 11 用戶交互用例圖 第 13 頁 共 30 頁 用戶之間聊天的信息主要通過聊天服務器進行中轉,用戶之間聊天內容主要存儲在客戶端的一些文件中,可以通過查看聊天功能來進行對這些聊天信息的讀取。 } if(p!=null) //隊列中 有 該好友 { JICQChatFrame jchatExist=null。 (jchat)。 if ((hisJICQ)) { isExistFrame=1。 (1)。 While(true) { line=()。i++) {PersonThread tt=(PersonThread)(i)。 ArrayList flist=new ArrayList(50)。 if(rsMessage!=null) while(()) { int FriendJICQ=(FriendJICQ)。 (Allmsg,JNUM)。 Statement st = null。 //設定編碼方式,從 配置文件中獲取該參數(shù) = (encoding)。 (encoding)。 難點之一,在注冊模塊遇到數(shù)據(jù)庫連接不成功的問題,通過請教老師,成功解決問題。該系統(tǒng)可以 運行在互聯(lián)網(wǎng)或者局域網(wǎng)上,使用戶可以很方便的進行信息的交流。 [6] 核心研究室 .深入淺出 Java Swing 程序設計 [M].北京:中國鐵道出版社 ,2020。除非另有說明,本文的工作是原始性工作。 the fly sat upon the axletree of the chariot wheel, and said. What a dust do I raise? So are there some vain persons, that whatsoever goeths indeed! They could tell us something worth hearing, if they only knew how to talk. It39。 for all bravery stands upon parisons. They must needs be violent, to make good their own vaunts. Neithe r can they be secret, and therefore not effectual。 beaucoup de bruit, peu de fruit: much bruit, little fruit Yet certainly there is use of this quality, in civil affairs. Where there is an opinion, and fame to be created, either of virtue, or greatness, these men are good trumpeters. Again, as Titus Livius noteth, in the case of Antiochus, and the Aetolians。s eve I was reading the book, and had lost myself in it so pletely, that I fot my usual New Year39。 ( 2)學校可以采用影印、縮印或其他復制方式保存學位論文。 [8] 哈羅德 [美 ].java網(wǎng)絡編程 [M].劉東華譯 .北京:中國電力出版社 ,2020。即時通訊的發(fā)展速度和應用可以說是 Inter乃至整個世界的一個奇跡,我真誠的希望能有更多的科學工作者和專家加入到這一領域的研究中來 。解決的方法是下載 sql server2020 的 sp3 補丁包,如果沒有打該補丁包,就會出現(xiàn)連接數(shù)據(jù)庫不成公的問題。 } //銷毀該字符過濾器 public void destroy() { =null。 if(value==null)=true。 //創(chuàng)建數(shù)據(jù)庫的連接 Conn=(jdbc:seName=JICQ,sa, sa)。 } } 系統(tǒng)運行的效果圖 登錄界面 該界面提供用戶輸入自己注冊號碼和相應的密碼,然后 登錄系統(tǒng),如果還沒有注冊帳號,可以點“申請”進行帳 號的申請。 String msgHead=(MessageHead)。 } for(int i=0。 (i)。 //將讀取的信息按照特定格式進行拆分 StringTokenizer stk=new StringTokenizer(line,)。 PersonThread you。 } } } 服務器端監(jiān)聽與轉發(fā)消息代碼 下邊 是服務器端的監(jiān)聽程序,如果發(fā)現(xiàn)有 socket 連接,就創(chuàng)建一個與該連接所對應的一個線程 ,該線程主要用來處理用戶之間的信息交互 。 } else {//在聊天窗口中顯示該信息 (headmsg,msg)。//判定聊天窗口是否已經(jīng)打開 for(int i=0。 圖 14 數(shù)據(jù)庫物理模型 第 15 頁 共 30 頁 數(shù)據(jù)字典 下邊是關系數(shù)據(jù)庫中每個表所對應 的字段的詳細 信息 表 1 JUSERS(用戶表 )用來存放用戶注冊時的基本信息