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

正文內(nèi)容

基于socket的即時通信系統(tǒng)設計與實現(xiàn)(編輯修改稿)

2025-08-15 10:57 本頁面
 

【文章內(nèi)容簡介】 眾多客戶的請求 [7]。 C/S通信主要特點是客戶端之間的通信都要通過服務器的轉(zhuǎn)發(fā),會造成服務太 集中,在 C/S模型中,當網(wǎng)絡增大時,服務器的壓力就越大。當增加一個客戶,服務器的性能就會弱化,甚至會而使服務器失效而導致整個網(wǎng)絡的癱瘓等,其優(yōu)點是便于集中管理,像這種結(jié)構(gòu)一般用在用戶數(shù)量少的局域網(wǎng)內(nèi)。 C/S模型圖如圖 。 理工大學 學士學位論文 7 圖 C/S 模型圖 即時通信主流的通信協(xié)議 傳輸控制協(xié)議 TCP和用戶數(shù)據(jù)報 UDP是 TCP/IP協(xié)議族的兩個主要的傳輸協(xié)議,這兩個協(xié)議都使用 IP作為網(wǎng)絡層協(xié)議 [8]。在網(wǎng)絡通信傳輸機制中, TCP是屬于 “面向連接,可靠傳輸 ”的類型,面向連接的傳輸意味著在進行通信以前 ,需要在兩個系統(tǒng)之間建立邏輯連接,在每個數(shù)據(jù)傳輸?shù)倪^程中都需要進行應答以保證數(shù)據(jù)包的完整。這種方法需要的網(wǎng)絡開銷較大,但卻提供一種可靠的傳輸層服務。 UDP是屬于 “面向無連接,不可靠傳輸 ”的類型,該協(xié)議只負責接收和傳送上層協(xié)議傳遞的消息, UDP本身不做任何檢測、修改與應答,上層協(xié)議需要自己處理這些事務。 TCP、 UDP最大的區(qū)別在于為應用協(xié)議提供不同的服務。 UDP 協(xié)議 用戶數(shù)據(jù)報協(xié)議 UDP是建立在網(wǎng)際協(xié)議之上的,提供面向無連接、不可靠的數(shù)據(jù)報傳輸服務的傳輸協(xié)議 [9]。 UDP傳輸不像 TCP傳輸一樣需 要預先建立一條連接, UDP把數(shù)據(jù)發(fā)送出去但不進行差錯控制和流量控制,報文可能丟失、重復或者失序,而發(fā)送方卻得不到通知的,數(shù)據(jù)也不會被重傳。因此, UDP提供的是一種不可靠的應用數(shù)據(jù)傳輸服務。它不需要通過一些握手協(xié)議確保連接的可靠性,發(fā)送方直接把數(shù)據(jù)廣播到網(wǎng)絡上,理工大學 學士學位論文 8 任何欲接收者都可接收到數(shù)據(jù)。其優(yōu)點在于: 1. 使用 UDP 時,每個數(shù)據(jù)中都給出了完整的地址信息,發(fā)送數(shù)據(jù)之前不需要建立發(fā)送方與接收方的連接,因此減少了開銷和發(fā)送數(shù)據(jù)之前的時延。 2. 不使用擁塞控制,也不保證可靠傳輸,因此主機不需要維持具有許多參數(shù)的、復雜 的連接狀態(tài)表。 3. UDP不進行流量控制,沒有序列與確認、沒有超時重發(fā)等機制,因此它處理和傳輸數(shù)據(jù)的速度快。 作為一種面向無連接的傳輸協(xié)議,基于 UDP的應用程序在高可靠性、地延遲的網(wǎng)絡中運動的很好,但是在通信子網(wǎng)的服務質(zhì)量相對很低下的 Inter上,它可能就無法運行了,因為數(shù)據(jù)報的丟失過于頻繁。原因就在于 UDP的不可靠性,而這些應用程序自身可能有沒有提供可靠性保障。因此,基于 UDP的應用程序如果想在可靠性低下的網(wǎng)絡中運行的話,必須自己提供可靠性保障,例如遺失數(shù)據(jù)報重重傳、失序的數(shù)據(jù)報重新組合等。 TCP 協(xié)議 TCP是一個面向連接的、可靠的傳輸層協(xié)議,協(xié)議提供的服務包括面向連接、雙向、有序并且無重復的數(shù)據(jù)流傳送、有效的流量控制、全雙工操作和多路復用。它主要的功能是提供大量數(shù)據(jù)的傳輸并確保其傳輸無誤,并提供錯誤檢查、數(shù)據(jù)復原以及數(shù)據(jù)超時重傳等機制,適用于傳輸可靠性要求比較高的數(shù)據(jù)傳輸 [9]。 因此即時通信系統(tǒng)的消息傳輸一般是建立在 TCP協(xié)議基礎之上的,客戶與服務器之間都是通過 TCP傳輸數(shù)據(jù),服務器端口一般固定。由于 TCP是面向連接的,但是在國內(nèi)目前 IP地址短缺,很多時候采用通過局域網(wǎng)連入 Inter的網(wǎng)絡狀況, TCP的對等連接顯然不能滿足所有的要求,而且目前由于黑客軟件和病毒的泛濫,大部分上網(wǎng)的個人計算機都配置了防火墻在很大程度上阻止了許多的入站請求。所以數(shù)據(jù)傳輸大都是先嘗試直接連接,如果連接不通的話采用通過服務器中轉(zhuǎn)的方式。 Socket 技術(shù) 隨著 Inter 的迅猛發(fā)展,網(wǎng)絡通信應用程序的開發(fā)成為一個研究熱點。 Windows環(huán)境下進行通信程序設計的最基本方法是采用 Socket 技術(shù)實現(xiàn) [10]。 應用程序調(diào)用 Socket的 API(應用程序編程接口 )實現(xiàn)相互之間的通信,又利用下層的理工大學 學士學位論文 9 網(wǎng)絡 通信協(xié)議功能和操作系統(tǒng)調(diào)用實現(xiàn)實際的通信工作。 Socket工作原理如圖 : 圖 Socket 工作原理圖 Sockets也稱為套接字,是一種網(wǎng)絡編程接口,它是通信端點的一種抽象,提供了一種發(fā)送和接收數(shù)據(jù)的機制。用戶目前可以使用兩種類型的套接字,它們是流式套接字(Stream Sockets) 和數(shù)據(jù)報套接字 (Datagram Sockets),這兩種套接字傳輸?shù)臄?shù)據(jù)類型是不同的,因而其使用方法和相應的程序設計模型也是不同的 [11]。 多線程技術(shù) 操作系統(tǒng)是一個多任務的系統(tǒng),支持多任務調(diào)度和處理,基于該功能所提供的多任務空間,程序員可以完全控制應用程序中每一個片段的運行,從而編寫高效率的應用程序。所謂多任務通常包括這樣兩大類:單進程和多線程。進程是指在系統(tǒng)中正在運行的一個應用程序,當一個程序開始運行時,它就是一個進程,進程包括運行中的程序和程序所使用到的內(nèi)存和系統(tǒng)資源 [13];而一個進程又是由多個線程所組成的,線程是程序中的一個執(zhí)行流,線程是系統(tǒng)分配處理器時資源的基本單元,或者進程之內(nèi)獨立執(zhí)行的一個單元,對于操作系統(tǒng)而言,其調(diào) 度單元是線程 [14]。每個線程都有自己的專有寄存器,但代碼區(qū)是共享的,即不同的線程可以執(zhí)行同樣的函數(shù)。多線程是指,程序中包含多個執(zhí)行流,即在一個程序中可以同時運行多個不同的線程來執(zhí)行不同的任務,也就是說允應用程序 A 應用程序 B 網(wǎng)絡接口,例如, Windows Socket 網(wǎng)絡服務協(xié)議接口,例如 TCP/IP 操作系統(tǒng),例如 Windows 物理通信介質(zhì) 理工大學 學士學位論文 10 許單個程序創(chuàng)建多個并行執(zhí)行的線程來完成各自的任務,也就是多進程。多線程的應用可以大大地提高 CPU的利用率,在多線程程序中,一個線程必須等待的時候, CPU可以運行其它的線程而不是等待。 在即時通信系統(tǒng)開發(fā)中,主要用多線程來解決多用戶同時與服務器進行通信以及客戶端同時與其它多個客戶端通信的問題。其基本設計思路是 :服務器端啟動后,進入偵聽模式,如果有客戶端連接的信號收到,服務器就自己新建一個 Socket,然后新建一個線程用來和需要連接的客戶端通信,同時,為了能夠使 windows 窗口響應,還要發(fā)送事件給父窗口,接著自己繼續(xù)偵聽。新建的線程執(zhí)行完畢,自動關閉連接,釋放資源。這樣,就實現(xiàn)了 Socket 的連接和多線程通信。 JDBC 技術(shù) 本系統(tǒng)采用的是客戶 /服務器三層結(jié)構(gòu),即客戶端、服務器以及數(shù)據(jù)庫。我們所用到的訪問數(shù)據(jù)庫的技術(shù)是 JDBC。 JDBC即活動的數(shù)據(jù)對象,是 Microsoft開發(fā)的用于訪問數(shù)據(jù)庫的。其顯著 特點是快速、簡單。 JDBC(Java Data Base Connectivity, Java 數(shù)據(jù)庫連接 )是一種用于執(zhí)行 SQL 語句的Java API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用 Java 語言編寫的類和接口組成。 JDBC 為數(shù)據(jù)庫開發(fā)人員提供了一個標準的 API,據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純 Java API 編寫數(shù)據(jù)庫應用程序。 有了 JDBC,向各種關系數(shù)據(jù)發(fā)送 SQL語句就是一件很容易的事。換言之,有了 JDBC API,就不必為訪問 Sybase 數(shù)據(jù)庫專門寫一個程序,為 訪問 Oracle 數(shù)據(jù)庫又專門寫一個程序,或為訪問 Informix 數(shù)據(jù)庫又編寫另一個程序等等,程序員只需用 JDBC API 寫一個程序就夠了,它可向相應數(shù)據(jù)庫發(fā)送 SQL 調(diào)用。同時,將 Java 語言和 JDBC 結(jié)合起來使程序員不必為不同的平臺編寫不同的應用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是 Java 語言 “編寫一次,處處運行 ”的優(yōu)勢。 Java數(shù)據(jù)庫連接體系結(jié)構(gòu)是用于 Java應用程序連接數(shù)據(jù)庫的標準方法。 JDBC 對 Java程序員而言是 API,對實現(xiàn)與數(shù)據(jù)庫連接的服務提供商而言是接口模型。作為 API, JDBC為程序開發(fā)提供標準的接口,并為數(shù)據(jù)庫廠商及第三方中間件廠商實現(xiàn)與數(shù)據(jù)庫的連接提供了標準方法。 JDBC 使用已有的 SQL 標準并支持與其它數(shù)據(jù)庫連接標準。 JDBC 實現(xiàn)了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現(xiàn)的接口。 Java理工大學 學士學位論文 11 具有堅固、安全、易于使用、易于理解和可從網(wǎng)絡上自動下載等特性,是編寫數(shù)據(jù)庫應用程序的杰出語言。所需要的只是 Java 應用程序與各種不同數(shù)據(jù)庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。 JDBC 擴展了 Java 的功能。 Java 和 JDBC 的結(jié)合使信息傳 播變得容易和經(jīng)濟。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫,并能便捷地存取信息,即使這些信息是儲存在不同數(shù)據(jù)庫管理系統(tǒng)上。新程序的開發(fā)期很短。安裝和版本控制將大為簡化。程序員可只編寫一遍應用程序或只更新一次,然后將它放到服務器上,隨后任何人就都可得到最新版本的應用程序 [15]。 簡單地說, JDBC 可做三件事:與數(shù)據(jù)庫建立連接、發(fā)送操作數(shù)據(jù)庫的語句并處理結(jié)果。 開發(fā)工具介紹 在開發(fā)過程中主要用到 Eclipse、 MySQL 數(shù)據(jù)庫和 Microsoft Office Visio 等工具,下面對這些開發(fā)工具做一下詳細 介紹。 Eclipse 簡介 Eclipse 最初由 OTI 和 IBM 兩家公司的 IDE 產(chǎn)品開發(fā)組創(chuàng)建,起始于 1999 年 4 月。IBM 提供了最初的 Eclipse 代碼基礎。目前由 IBM 牽頭,圍繞著 Eclipse 項目已經(jīng)發(fā)展成為了一個龐大的 Eclipse 聯(lián)盟。 Eclipse 是一個開發(fā)源碼項目,它其實是 Visual Age for Java 的替代品,其界面跟先前的 Visual Age for Java 差不多,但由于其開放源碼,任何人都可以免費得到,并可以在此基礎上開發(fā)各自的插件,因此越來越受人們關注 [16]。 Eclipse 的本身只是一個框架平臺,但是眾多插件的支持使得 Eclipse 擁有其他功能相對固定的 IDE 軟件很難具有的靈活性。 Eclipse 最初主要用來 Java 語言開發(fā),但是目前也可以作為其他計算機語言比如 C++和 Python 的開發(fā)工具。雖然大多數(shù)用戶很樂于將 Eclipse 當作 IDE 來使用,但 Eclipse 的目標不僅限于此。 Eclipse 還包括插件開發(fā)環(huán)境,這個組件主要針對希望擴展 Eclipse 的軟件開發(fā)人員,因為它允許他們構(gòu)建與 Eclipse 環(huán)境無縫集成的工具。由于 Eclipse 中的每樣東西都是插件,對于給 Eclipse 提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。 理工大學 學士學位論文 12 Eclipse 主要特點: 1.增加了 WindowBuilder ,一個流行的 Eclipse 開發(fā) GUI 構(gòu)建器,用戶需要以安裝插件的形式獲得此功能。 2. Eclipse Market ,用戶可以在線獲取應用市場上種類繁多的 Eclipse 插件 (包括免費的和收費的 ),相比原來的 Install new software(現(xiàn)在仍然存在并可用 ),更加直接和便捷。 3. 使得它更容易創(chuàng)建領域特定語言。 4. 提供 Git 版本控制系統(tǒng)的緊密集成。 5.更好地與 Maven 整合,包括啟動 Maven 的構(gòu)建和維護 pom 文件。 6. Jubula 提供 Java 和 HTML 的自動化 GUI 測試功能。 MySQL 簡介 MySQL是一個小型關系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典 MySQL AB公司。在 20xx年 1 月 16 號被 Sun 公司收購。而 20xx 年, SUN 又被 Oracle 收購。 MySQL 是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng),關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉 庫內(nèi)。這樣就增加了速度并提高了靈活性。 MySQL 的 SQL“結(jié)構(gòu)化查詢語言 ”。 SQL是用于訪問數(shù)據(jù)庫的最常用標準化語言。 MySQL 軟件采用了 GPL(GNU 通用公共許可證 )。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了 MySQL 作為網(wǎng)站數(shù)據(jù)庫 [17]。 MySQL 數(shù)據(jù)庫還有以下特點: 1.使用 C 和 C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性。 2.支持 Linux、 Mac OS、 Solaris、 Windows 等多種操作系統(tǒng)。 3.為多種編程語言提供了 API。這些編程語言包括 C、 C++、 Java、 PHP 等。 4.支持多線程,充分利用 CPU 資源。 5.優(yōu)化的 SQL 查詢算法,有效地提高查詢速度。 6.既能夠作為一個單獨的應用程序應用在客戶端服務器網(wǎng)絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的 GB 231 BIG5,日文的 Shift_JIS 等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。 7.提供 TCP/IP、 ODBC 和 JDBC 等多種數(shù)據(jù)庫連接途徑。 8.提供用于管理、檢查、優(yōu)化數(shù)據(jù) 庫操作的管理工具。 理工大學 學士學位論文 13 9.可
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1