簡單的即時通信軟件_第1頁
簡單的即時通信軟件_第2頁
簡單的即時通信軟件_第3頁
簡單的即時通信軟件_第4頁
簡單的即時通信軟件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、河南理工大學萬方科技學院課程設計報告2015 2016學年第二學期課程名稱計算機網(wǎng)絡設計題目 簡單的即時通信軟件姓 名學 號專業(yè)班級 15級計科專升本指導教師張靜2016年6月25日 TOC o 1-5 h z HYPERLINK l bookmark24 o Current Document 一、任務分析與方案設計0 HYPERLINK l bookmark28 o Current Document 任務分析1 HYPERLINK l bookmark31 o Current Document 方案設計1 HYPERLINK l bookmark35 o Current Document 二

2、、需求分析1 HYPERLINK l bookmark39 o Current Document 功能需求分析 1 HYPERLINK l bookmark46 o Current Document 數(shù)據(jù)需求分析2 HYPERLINK l bookmark53 o Current Document 性能需求分析2 HYPERLINK l bookmark61 o Current Document 運行需求分析3 HYPERLINK l bookmark66 o Current Document 三、開發(fā)環(huán)境與工具3 HYPERLINK l bookmark70 o Current Docume

3、nt 設計環(huán)境3 HYPERLINK l bookmark74 o Current Document 1.1 eclipse開發(fā)平臺介紹4基礎知識4 HYPERLINK l bookmark77 o Current Document 2.1java Socket網(wǎng)絡編程簡介 4 HYPERLINK l bookmark82 o Current Document 2.2套接字的介紹 5 HYPERLINK l bookmark85 o Current Document 2.3 TCP/IP協(xié)議簡介 5 HYPERLINK l bookmark88 o Current Document 四、關(guān)鍵技

4、術(shù)與理論6 HYPERLINK l bookmark92 o Current Document JAVA編程技術(shù)6 HYPERLINK l bookmark96 o Current Document Java Socket 網(wǎng)絡編程接口 6 HYPERLINK l bookmark100 o Current Document 五、相關(guān)圖解及程序7 HYPERLINK l bookmark104 o Current Document 體系結(jié)構(gòu)設計7 HYPERLINK l bookmark107 o Current Document 具體功能模塊的分析8六、測試及結(jié)果分析10 HYPERLINK

5、 l bookmark111 o Current Document 七、心得體會12 HYPERLINK l bookmark114 o Current Document 八、 參考文獻13一、任務分析與方案設計1 .任務分析計算機網(wǎng)絡被應用于我們生活中的方方面面,可以說是網(wǎng)絡讓我們的生活變 得更加美好,更加方便和快捷,我們的生活離不開網(wǎng)絡基于局域網(wǎng)的即時通信軟件的核心技術(shù)其實與基于Internet的即時通信軟 件的設計技術(shù)是一樣的,只是規(guī)模比較小?;贗nternet的通信工具一般采用 TCP或者UDP協(xié)議來實現(xiàn)的,開發(fā)技術(shù)已經(jīng)非常成熟,它們不僅實現(xiàn)了即時聊天、 文件傳輸?shù)裙δ?,而且還能夠?qū)?/p>

6、現(xiàn)即時視頻、語音聊天功能等。在局域網(wǎng)內(nèi),這 類軟件的設計比在Internet中設計更為簡單。因為Internet是網(wǎng)絡中的網(wǎng)絡, 結(jié)構(gòu)更為復雜,遇到的情況要比在局域網(wǎng)中還要多。所以說局域網(wǎng)的聊天工具的 設計要相對簡單些。而且即時通信是一個終端連往一個即時通信網(wǎng)絡的服務。即時通信不同于 e-mail在于它的交談是實時的。大部分的即時通信服務提供了presenceawareness的特性一一顯示聯(lián)絡人名單,聯(lián)絡人是否在線與能否和聯(lián)絡人交談。方案設計程序采用JAVA編程,利用java強大的基礎類庫,調(diào)用java中界面開發(fā)的 swing和網(wǎng)絡編程的net函數(shù)群來完成本次的java socket (網(wǎng)絡

7、套接字)網(wǎng)絡 即時通信工具的開發(fā)。在java中,可以把發(fā)送的信息看成是一個一個的對象, 當我們利用socket鏈接把客戶端和服務器鏈接起來后,他們之間就可以以對象 流的形式發(fā)送彼此需要通信的信息了。在java網(wǎng)絡編程中,最為核心的就是客 戶端和服務器相互取得socket的鏈接,只要能夠能夠取得鏈接,其他的工作基 本上都是java的面向?qū)ο蟮木幊趟枷肴ネ瓿梢恍┚W(wǎng)絡通訊的業(yè)務邏輯的處理。二、需求分析功能需求分析用戶端之間的信息發(fā)送,本程序需要實現(xiàn)的最基本的功能。用戶在界面上 可以將自己需要發(fā)送的信息填入相應的對話框中,點擊發(fā)送按鈕后,可以將信息 正常的發(fā)送給相應的其它用戶,這個過程中的客戶端與客戶

8、端之間使用點對點發(fā) 送信息,預計利用TCP/IP協(xié)議中的UDP協(xié)議,在本程序中共需要3個端口,此 功能預計使用3號端口。在線用戶主機IP列表的維護。在用戶發(fā)送信息之前,需要選擇相應的目的 地端IP,這也就需要客戶端擁有在線用戶主機的IP地址,這個在線主機列表的 維護是需要客戶端定時自動向服務器端發(fā)送信息,服務器端收集并維護在線用戶 列表,再發(fā)送回客戶端。需要在客戶端和服務器端都使用定時器來完成此功能。 此功能預計使用1、2號端口。在C/S模式中,服務器與客戶端是相互依賴的。在客戶端啟用以后,需要 查看服務器端是否在線,服務器在線才能正常使用客戶端,如果服務器不在線, 則在檢測一定次數(shù)以后自動退

9、出客戶端程序。在使用過程中,客戶端在指定時間 內(nèi)未向服務器端發(fā)送信息的,服務器認為客戶端下線;客戶端在一定時間內(nèi)未收 到服務器端信息的,認為服務器已經(jīng)下線,則提示用戶并建議退出,在用戶一定 時間后沒有退出的則自動關(guān)閉客戶端程序。2 .數(shù)據(jù)需求分析客戶端之間聊天信息。在控件上顯示時格式化,更易于用戶的查看自己發(fā) 送或接收到的信息。在線用戶聊天信息。服務器端存放在適當?shù)目臻g中,在發(fā)送給客戶端時, 對信息列表進行格式化,便于客戶端提取信息。客戶端向服務器端發(fā)送的確認在線信息。包括客戶端剛剛啟動時的初始化 信息和在使用過程中的確認在線信息。其它程序內(nèi)部可能需要設計的數(shù)據(jù)結(jié)構(gòu)體。性能需求分析可靠性高,能

10、在由于系統(tǒng)問題或其它原因產(chǎn)生錯誤后,作出相對應處理, 比如網(wǎng)絡初始化失敗、服務器不在線等,可以提示用戶安全退出本程序,在出現(xiàn) 不可知的錯誤以后,可以盡量安全的退出程序。在程序的設計過程中,要求能盡 可能多的設想到用戶使用過程中可能發(fā)生的事件,并能在判斷事件后做出相應的 處理,使程序具有較高的容錯性能。(2)宜操作性,程序簡單易懂,容易上手使用。設計界面是,簡化界面的復雜 性,模擬QQ等現(xiàn)有即時通訊工具的界面,使用戶能很容易看懂并使用。(3)開發(fā)文檔易理解,保證以后自己二次開發(fā)或他人接手開發(fā)時,能夠清晰的 理解整個系統(tǒng)的設計思路和實現(xiàn)細節(jié)。(4)模塊化設計此軟件的功能,不同的模塊實現(xiàn)不同的功能,

11、使得軟件易于以 后的維護與擴展,在以后可以更好的完善本軟件的功能,更方便于在工作中的應 用。4 .運行需求分析(1)用戶界面程序較小,啟動速度快??稍诰W(wǎng)絡中使用,有注冊功能,需進行用戶登錄。 啟動后的應用界面要清爽,設計要簡單明了,要具有較高的易用性。(2)故障處理在遇到可預知的故障與情況時,能提示用戶并自動退出;在遇到不可預知的 故障時能安全退出。三、開發(fā)環(huán)境與工具設計環(huán)境開發(fā)程序的操作系統(tǒng):Windows?(在Windows XP、2000里也可以)編譯工具:eclipse程序工程:JAVA工程,Server和Client網(wǎng)絡環(huán)境:局域網(wǎng)(或互聯(lián)網(wǎng)上運用,只要安裝客戶端并且知道服務器端的I

12、P)l.leclipse開發(fā)平臺介紹Eclipe是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。主要用來Java語言開 發(fā)。Eclipse的本身只是一個框架平臺,但是眾多插件的支持,使得Eclipse擁有 較佳的靈活性。許多軟件開發(fā)商都以Eclipse為框架開發(fā)自己的IDE。另外由于eclipse是開源的,所以得到了廣大用戶的認可。Eclipse也于2001 年11月被它的開發(fā)公司IBM公司貢獻給開源社區(qū),現(xiàn)在它由非營利軟件供應商 聯(lián)盟 Eclipse 基金會(Eclipse Foundation)管理?;A知識2.1java Socket網(wǎng)絡編程簡介Socket有兩種主要的操作方式:面向連接的和

13、無連接的。面向連接的sockets 操作就像一部電話,他們必須建立一個連接和一人呼叫。所有的事情在到達時的 順序與它們出發(fā)時的順 序時一樣。無連接的sockets操作就像是一個郵件投遞, 沒有什么保證,多個郵件可能在到達時的順序與出發(fā)時的順序不一樣。到底用哪種模式是郵應用程序的需要決定的。如果可靠性更重要的話,用面 向連接的操作會好一些.比如文件服務器需要他們的數(shù)據(jù)的正確性和有序性。如 果一些數(shù)據(jù)丟失了,系統(tǒng)的有效性將會失去。一些服務器,比如間歇性地發(fā)送一 些數(shù)據(jù)塊,如果數(shù)據(jù)丟了的話,服務器并不想要再重新發(fā)過一次,因為當數(shù)據(jù)到 達的時候,它可能已經(jīng)過時了 .確保數(shù)據(jù)的有序性和正確性需要額外的操

14、作的內(nèi) 存消耗,額外的費用將會降低系統(tǒng)的回應速率。無連接的操作使用數(shù)據(jù)報協(xié)議。一個數(shù)據(jù)報是一個獨立的單元,它包含了所 有的這次投遞的信息。把它想象成一個信封吧,它有目的地址和要發(fā)送的內(nèi)容。 這個模式下的socket不需要連接一個目的的socket,它只是簡單地投出數(shù)據(jù) 報。無連接的操作是快速的和高效的,但是數(shù)據(jù)安全性不佳。面向連接的操作使用TCP協(xié)議。一個這個模式下的socket必須在發(fā)送數(shù) 據(jù)之前與目的地的socket取得一個連接。一旦連接建立了,sockets就可以使用 一個流接口:打開(-讀-寫-關(guān)閉)。所有的發(fā)送的信息都會在另一端以同樣的順 序被接收.面向連接的操作比無連接的操作效率更

15、低,但是數(shù)據(jù)的安全性更高。java降低了建立一個sockets程序的難度。每一個傳輸模式都被封裝到了 不同的類中。面向連接的類將會首先被我們討論。到底用哪種模式是郵應用程序 的需要決定的。如果可靠性更重要的話,用面向連接的操作會好一些。比如文件 服務器需要他們的數(shù)據(jù)的正確性和有序性。如果一些數(shù)據(jù)丟失了,系統(tǒng)的有效性 將會失去。一些服務器,比如間歇性地發(fā)送一些數(shù)據(jù)塊,如果數(shù)據(jù)丟了的話,服 務器并不想要再重新發(fā)過一次。因為當數(shù)據(jù)到達的候,它可能已經(jīng)過時了。確保 數(shù)據(jù)的有序性和正確性需要額外的操作的內(nèi)存消耗,額外的費用將會降低系統(tǒng)的 回應速率.2.2套接字的介紹多個TCP連接或多個應用程序進程可能需

16、要通過同一個TCP協(xié)議端口傳輸 數(shù)據(jù)。為了區(qū)別不同的應用程序進程和連接,許多計算機操作系統(tǒng)為應用程序與 TCP / IP協(xié)議交互提供了稱為套接字(Socket)的接口。套接字,是支持TCP/IP的網(wǎng)絡通信的基本操作單元,可以看做是不同主機 之間的進程進行雙向通信的端面點,簡單的說就是通信的兩方的一種約定,用套 接字中的相關(guān)函數(shù)來完成通信過程非常非常簡單的舉例說明下:Socket=Ipaddress+ TCP/UDP port.應用層通過傳輸層進行數(shù)據(jù)通信時,TCP和UDP會遇 到同時為多個應用程序進程提供并發(fā)服務的問題。2.3 TCP/IP協(xié)議簡介TCP/IP協(xié)議實際上就是在物理網(wǎng)上的一組完整

17、的網(wǎng)絡協(xié)議。其中TCP是提 供傳輸層服務,而IP則是提供網(wǎng)絡層服務。TCP/IP主要包括以下協(xié)議:IP:網(wǎng)間協(xié)議(Internet Protocol),負責主機間數(shù)據(jù)的路由和網(wǎng)絡上數(shù)據(jù) 的存儲。同時為ICMP,TCP,UDP提供分組發(fā)送服務。用戶進程通常不需要涉及 這一層。ICMP:網(wǎng)間報文控制協(xié)議(Internet Control Message Protocol)此協(xié)議處 理網(wǎng)關(guān)和主機的差錯和傳送控制。TCP:傳輸控制協(xié)議(Transmission Control Protocol)這是一種提供給用 戶進程的可靠的全雙工字節(jié)流面向連接的協(xié)議。它要為用戶進程提供虛電路服 務,并為數(shù)據(jù)可靠傳輸

18、建立檢查。四、關(guān)鍵技術(shù)與理論JAVA編程技術(shù)Java是Sun公司推出的一種編程語言。它是一種通過解釋方式來執(zhí)行的語 言,語法規(guī)則和C+類似。同時,Java也是一種跨平臺的程序設計語言。用Java 語言編寫的程序叫做“Applet”(小應用程序),用編譯器將它編譯成類文件后, 將它存在WWW頁面中,并在HTML檔上作好相應標記,用戶端只要裝上Java的客 戶軟件就可以在網(wǎng)上直接運行“Applet”。Java非常適合于企業(yè)網(wǎng)絡和Internet 環(huán)境,現(xiàn)在已成為Internet中最受歡迎、最有影響的編程語言之一。Java有 許多值得稱道的優(yōu)點,如簡單、面向?qū)ο?、分布式、解釋性、可靠、安全、結(jié)構(gòu)Ja

19、va Socket網(wǎng)絡編程接口事實上網(wǎng)絡編程,簡單的理解就是兩臺計算機相互通訊數(shù)據(jù)而已。對于程序 員而言,去掌握一種編程接口并使用一種編程模型相對就會顯得簡單的多了。 Java sdk提供一些相對簡單的api來完成這些工作,socket就是其中之一。對于java而言,這些api存在于這個包里面。因此,只要導入這 個包就可以準備網(wǎng)絡編程了。網(wǎng)絡編程的基本模型就是客戶機到服務器模型。簡 單的說,就是兩個進程之間相互通訊,然后其中一個必須提供一個固定的位置, 而另一個則只需要知道這個固定的位置,并去建立兩者之間的聯(lián)系。然后完成數(shù) 據(jù)的通訊就可以了。這里提供固定位置的通常稱為服務器,而建立聯(lián)系的通常叫

20、 做客戶端?;谶@個簡單的模型,就可以進入網(wǎng)絡編程.對于java而言已經(jīng)簡化了 socket的編程接口。首先需要確定有關(guān)提供固定 位置的服務方是如何建立的。java提供了 serversocket來對其進行支持。事實 上當創(chuàng)建該類的一個實力對象并提供一個端口資源,就建立了一個固定位置可以 讓其他計算機來訪問。serversocket server=new serversocket(6789);這里稍微要注意的是端口的分配必須是唯一的。因為端口是為了唯一標識每 臺計算機唯一服務的。另外端口號是從065535之間的,前1024個端口已經(jīng)被 tcp/ip作為保留端口,因此,分配的端口只能是1024個

21、之后的。有了固定位置, 現(xiàn)在所需要的就是一根連接線了。該連接線由客戶方首先提出要求。因此java 同樣提供了一個socket對象來對其進行支持。只要客戶方創(chuàng)建一個socket的實 例對象進行支持就可以了。socket client二new socket(inetaddress.getlocalhost(), 5678);客戶機必須知道有關(guān)服務器的ip地址。對于這一點,java也提供了一個相 關(guān)的類inetaddress。該對象的實例必須通過它的靜態(tài)方法來提供。它的靜態(tài)方 法主要提供了得到本機ip和通過名字或ip直接得到inetaddress的方法。i/o操作總是和網(wǎng)絡編程息息相關(guān)的。因為底層的

22、網(wǎng)絡是繼續(xù)數(shù)據(jù)的。除非 遠程調(diào)用,處理問題的核心在執(zhí)行上。否則,數(shù)據(jù)的交互還是依賴于io操作的。所以,你也必須導入java.io這 個包。java的io操作也不復雜。它提供了針對于字節(jié)流和Unicode的讀者和寫 者,然后也提供了一個緩沖用于數(shù)據(jù)的讀寫。bufferedreader in=new bufferedreader(new inputstreamreader(server.getinputstream();printwriter out=new printwriter(server.getoutputstream();上面兩句就是建立緩沖并把原始的字節(jié)流轉(zhuǎn)變?yōu)閡nicode可以操作。

23、而原始 的字節(jié)流來源于 socket 的兩個方法,getinputstream()和 getoutputstream() 方法,分別用來得到輸入和輸出。五、相關(guān)圖解及程序1.體系結(jié)構(gòu)設計一般的通信工具,都采用客戶端/服務器體系結(jié)構(gòu)。客戶端/服務器的結(jié)構(gòu)包 含:客戶端和服務端。客戶端訪問和處理服務器上的數(shù)據(jù),服務器接收和處理客 戶端的數(shù)據(jù)請求。這種模式的好處就是可以將一個系統(tǒng)分為兩個獨立的部分進行 開發(fā)設計,便于軟件開發(fā)。而且也把一個軟件的功能交給兩個部分去完成,則更 加有效的利用了系統(tǒng)資源。具體功能模塊的分析由于該系統(tǒng)采用c/s模式,所以對功能模塊進行劃分時,就需要分服務器和 客戶端兩部分進行

24、。由于服務器的主要功能是等待接收并反饋客戶端的信息,所以服務器需要信 息輸出模塊和通信模塊。其中通信模塊包含信息發(fā)送模塊和信息接收模塊。而信 息輸出模塊要做到當信息發(fā)生改變時及時更新。客戶端同樣也需要通信模塊和信 息輸出模塊,同時要互相通信,就要具備輸入輸出。具體模塊劃分見下圖:監(jiān)聽客戶端的通訊。接受客戶端請求。服務器端開放端口,得帶 每個客戶端連接.客戶端A發(fā)送信息客戶端B發(fā)送信息六、測試及結(jié)果分析七、心得體會即時通信是是網(wǎng)絡發(fā)展的必然趨勢,它的技術(shù)仍然在不斷的改進和蓬勃發(fā)展 中。本次設計雖然實現(xiàn)了簡單的即時通信功能,但是從很多方面來說都是不完善 的:實現(xiàn)了字符聊天卻沒有實現(xiàn)多媒體即時通信;

25、實現(xiàn)了同步套接字聊天和異步 套接字傳送文件卻沒有實現(xiàn)更科學的異步套接字聊天和同步套接字傳送文件。由于之前沒有學過Java,所以對Eclipse編程環(huán)境幾乎是一無所知,在程序 編譯過程中遇到的問題比較多,主要是對那些錯誤還有警告開始都不知道什么意 思,花了兩天的時間在程序的調(diào)試上面。另外就是一些概念性的知識欠缺,尤其 是套接字編程原理,所以對程序的一些函數(shù)的功能用法有些模糊。其實遇到的種種問題主要是兩方面的原因。一個是基礎知識的掌握不夠牢 固,概念的混淆,不能夠很快的用最佳的方式去解決遇到的問題等等,都是由于 知識的不熟練導致。另一個就是Java部分知識的缺乏,導入文件還有一些參數(shù) 的選擇都要查

26、詢一下資料,主要是第一次操作這方面的知識。針對這些問題,主 要從兩個方面著手處理應該,一方面是多對所學過的知識強化溫習,做到熟能生 巧,溫故知新。另一方面就是準備的不夠充分,之前應該及早的對所需軟件進行 熟悉,在以后的實習過程中需要注意。經(jīng)過這次課程設計,我們收獲了很多,也學習到了很多。使我對網(wǎng)絡的 TCP/IP協(xié)議和網(wǎng)絡中實現(xiàn)主機之間的相互通信的方法有了一定的了解和體會。 通過這次編程,也加深了對網(wǎng)絡編程特別是WinSock編程的理解。同時對java 的一些編程技術(shù)的實現(xiàn)也有了更深入的了解。學到了到底一些功能要用哪些規(guī)定 的函數(shù)來實現(xiàn),以及在用這些函數(shù)的時候要注意哪些東西,比如說,要引用規(guī)定 的函數(shù)包,設定規(guī)定的變量、組件,并且在引用的時候需要注意的東西等。同時 也深刻體會到SOCKET編程的基礎性,多樣化。由于與網(wǎng)絡緊密聯(lián)系,SOCKET 編程的也可能出現(xiàn)各種未知的問題,需要我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論