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

正文內容

基于socket的即時通信系統設計與實現(編輯修改稿)

2024-08-15 10:57 本頁面
 

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