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

正文內(nèi)容

畢業(yè)設(shè)計-班級網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計-資料下載頁

2024-12-03 18:30本頁面

【導(dǎo)讀】的日常生活也產(chǎn)生了深遠(yuǎn)的影響。Java的結(jié)構(gòu)雖類似C/C++,但因其平臺無關(guān)性和與互。聯(lián)網(wǎng)發(fā)展緊密結(jié)合,預(yù)計未來必定成為互聯(lián)網(wǎng)和計算機(jī)應(yīng)用的主流。紐約時報評為1995年的十大科技成果之一,并將Java作為一項重大發(fā)明載入科技史冊!心的計算時代轉(zhuǎn)移,而購買Java則是他的重大戰(zhàn)略決策的實施部署。也曾為純Java對峙法庭,微軟必將直接或間接將Java技術(shù)融入到其產(chǎn)品體系中。Microsoft公司的總裁ScottMcNealy認(rèn)為Java為Inter和WWW開辟了一個嶄新的。Java,并且將很快發(fā)生。所以,使用Java已成大勢所趨。開發(fā)集成環(huán)境VisualAgeForJava、網(wǎng)站集成平臺Webspere,Microsoft的VJ++都是目。前主要常見的Java開發(fā)環(huán)境或產(chǎn)品。香港則在1996年4月就舉行了全島的Java杯比賽,在計算機(jī)界。掀起了學(xué)習(xí)Java的熱潮。SUN公司與國內(nèi)清華大學(xué)、北京大學(xué)的著名高校合作,成立10個“Java教育中心”;效率提高,新一輪Java熱潮再次被掀起。行業(yè)用戶所接受,Java技術(shù)水平也將逐步與世界同步。因此,Java強(qiáng)調(diào)安全性,

  

【正文】 斷完善,最終形成了 Socket 套接字。 Linux 系統(tǒng)采用了 Socket 套接字,因此, Socket 接口就被廣泛使用,到現(xiàn)在已經(jīng)成為事實上的標(biāo)準(zhǔn)。 任何用戶在通信之前,首先要先申請一個 Socket 號, Socket 號相當(dāng)于自己的電話號碼。同時要知道對方的電話號碼,相當(dāng)于對方有一個 Socket。然后向?qū)Ψ綋芴柡艚?,相?dāng)于發(fā)出連接請求(假如對方不在同一區(qū)內(nèi),還要撥對方區(qū)號,相當(dāng)于給出網(wǎng)絡(luò)地址)。對方假如在場并空閑(相當(dāng)于通信的另一主機(jī)開機(jī)且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當(dāng)于連接成功。雙方通話的過程,是向電話機(jī)發(fā)出信號和從電話機(jī)接受信號的過程,相當(dāng)于 Socket 發(fā)送數(shù)據(jù)和從 Socket 接 受數(shù)據(jù)。通話結(jié)束后,一方掛起電話機(jī),相當(dāng)于關(guān)閉 Socket,撤銷連接。 由此可見, Socket 的通信機(jī)制與電話交換機(jī)制非常相似。 Socket 實質(zhì)上提供了進(jìn)程通信的端點(diǎn)。進(jìn)程通信之前,雙方首先必須各自創(chuàng)建一個端點(diǎn),否則是沒有辦法建立聯(lián)系并相互通信的。每一個 Socket 都用一個半相關(guān)描述。 每一個 Socket 有一個本地的唯一 Socket 號,由操作系統(tǒng)分配。套接字有 3 種類型:班級網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計 23 流式套接字( SOCK_STREAM)、數(shù)據(jù)包套接字( SOCK_DGRAM)和原始套接字。流式套接字可以提供可靠的、面向連接的通信流。如果通過 流式套接字發(fā)送了順序的數(shù)據(jù): 2。那么數(shù)據(jù)到達(dá)遠(yuǎn)程時候的順序也是 2。流式套接字可用于 Tel 遠(yuǎn)程連接、WWW 服務(wù)等需要使數(shù)據(jù)順序傳遞的應(yīng)用,它使用 TCP 協(xié)議保證數(shù)據(jù)傳輸?shù)目煽啃浴A魇教捉幼值墓ぷ髟砣鐖D 所示,我們將網(wǎng)絡(luò)中的兩臺主機(jī)分別作為服務(wù)器和客戶機(jī)看待。 數(shù)據(jù)包套接字定義了一種無連接的服務(wù),數(shù)據(jù)通過相互獨(dú)立的報文進(jìn)行傳輸,是無序的,并且不保證可靠性。數(shù)據(jù)包套接字使用者數(shù)據(jù)包協(xié)議 UDP,數(shù)據(jù)只是簡單地傳送到對方。 數(shù)據(jù)包套接字的工作原理如圖所示。 圖 35 流式套接字工作原理 陜西科技大學(xué)畢業(yè) 設(shè)計說明書 24 圖 36 數(shù)據(jù)套接字的工作原理 原始套接字允許對低層協(xié)議如 IP 或 ICMP 直接訪問,主要用于新的網(wǎng)絡(luò)協(xié)議實現(xiàn)的測試等。原始套接字主要用于一些協(xié)議的開發(fā),可以進(jìn)行比較底層的操作。它功能強(qiáng)大,但是沒有上面介紹的兩種套接字使用方便,一般的程序也涉及不到原始套接字。 無論何時,在兩個網(wǎng)絡(luò)應(yīng)用程序之間發(fā)送和接收信息時都需要建立一個可靠的連接,流套接字依靠 TCP 協(xié)議來保證信息正確到達(dá)目的地,實際上, IP 包有可能在網(wǎng)絡(luò)中丟失或者在傳送過程中發(fā)生錯誤,任何一種情況發(fā)生,作為接受方的 TCP 將聯(lián)系發(fā)送方 TCP 重新發(fā)送這個 IP 包。這就是所謂的在兩個流套接字之間建立可靠的連接。 流套接字在 C/S 程序中扮演一個必需的角色,客戶機(jī)程序創(chuàng)建一個扮演服務(wù)器程序的主機(jī)的 IP 地址和服務(wù)器程序的端口號的流套接字對象。 客戶端流套接字的初始化代碼將 IP 地址和端口號傳遞給客戶端主機(jī)的網(wǎng)絡(luò)管理軟件,管理軟件將 IP 地址和端口號通過 NIC 傳遞給服務(wù)器端主機(jī);服務(wù)器端主機(jī)讀到經(jīng)過 NIC 傳遞來的數(shù)據(jù),然后查看服務(wù)器程序是否處于監(jiān)聽狀態(tài),這種監(jiān)聽依然是通過套接字和端口來進(jìn)行的;如果服務(wù)器程序處于監(jiān)聽狀態(tài),那么服務(wù)器端 網(wǎng)絡(luò)管理軟件就向客戶機(jī)網(wǎng)絡(luò)管理軟件發(fā)出一個積極的響應(yīng)信號,接收到響應(yīng)信號后,客戶端流套接字初始化代碼就給客戶程序建立一個端口號,并將這個端口號傳遞給服務(wù)器程序的套接字同時完成流套接字的初始化。如果服務(wù)器程序沒有處于監(jiān)聽狀態(tài),那么服務(wù)器端網(wǎng)絡(luò)管理軟件將給客戶端傳遞一個消極信號,收到這個消極信號后,客戶程序的流套接字初始化代碼將拋出一個異常對象并且不建立通訊連接,也不創(chuàng)建流套接字對象。 班級網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計 25 這部分的工作包括了相關(guān)聯(lián)的三個類: IAddress, Socket, 和 ServerSocket。因為使用流套接字的每 個連接均要花費(fèi)一定的時間,要減少這種開銷,網(wǎng)絡(luò) API 提供了第二種套接字:自尋址套接字( datagram socket),自尋址使用 UDP 發(fā)送尋址信息(從客戶程序到服務(wù)程序或從服務(wù)程序到客戶程序),不同的是可以通過自尋址套接字發(fā)送多 IP信息包,自尋址信息包含在自尋址包中,此外自尋址包又包含在 IP 包內(nèi),這就將尋址信息長度限制在 60000 字節(jié)內(nèi)。圖 2 顯示了位于 IP 包內(nèi)的自尋址包的自尋址信息。 圖 37 自尋址信息 與 TCP 保證信息到達(dá)信息目的地的方式不同, UDP 提供了另外一種方法,如果自尋址信息包沒有到達(dá)目的地,那么 UDP 也不會請求發(fā)送者重新發(fā)送自尋址包,這是因為 UDP 在每一個自尋址包中包含了錯誤檢測信息,在每個自尋址包到達(dá)目的地之后UDP 只進(jìn)行簡單的錯誤檢查,如果檢測失敗, UDP 將拋棄這個自尋址包,也不會從 發(fā)送者那里重新請求替代者,這與通過郵局發(fā)送信件相似,發(fā)信人在發(fā)信之前不需要與收信人建立連接,同樣也不能保證信件能到達(dá)收信人那里 。 自尋址套接字工作包括下面三個類: DatagramPacket, DatagramSocket, 和 MulticastSocket。 DatagramPacket 對象描繪了自尋址包的地址信息, DatagramSocket 表示客戶程序和服務(wù)程序自尋址套接字, MulticastSocket 描繪了能進(jìn)行多點(diǎn)傳送的自尋址套接字,這三個類均位于 包內(nèi)。 ( a) DatagramPacket 類 : 在使用自尋址包之前,你需要首先熟悉 DatagramPacket類,地址信息和自尋址包以字節(jié)數(shù)組的方式同時壓縮入這個類創(chuàng)建的對象中 DatagramPacket 有數(shù)個構(gòu)造函數(shù),即使這些構(gòu)造函數(shù)的形式不同,但通常情況下他們都有兩個共同的參數(shù): byte [] buffer 和 int length, buffer 參數(shù)包含了一個對保存自尋址數(shù)據(jù)包信息的字節(jié)數(shù)組的引用, length 表示字節(jié)數(shù)組的長度。 最簡單的構(gòu)造函數(shù)是 DatagramPacket(byte [] buffer, int length), 這個構(gòu)造函數(shù)確定了自尋址數(shù)據(jù)包數(shù)組和數(shù)組的長度,但沒有任何自尋址數(shù)據(jù)包的地址和端口信息,這些信息可以后面通過調(diào)用方法 setAddress(IAddress addr)和 setPort(int port)添加。 陜西科技大學(xué)畢業(yè) 設(shè)計說明書 26 ( b) DatagramSocket 類 : DatagramSocket 類在客戶端創(chuàng)建自尋址套接字與服務(wù)器端進(jìn)行通信連接,并發(fā)送和接受自尋址套接字。雖然有多個構(gòu)造函數(shù)可供選擇,但我發(fā)現(xiàn)創(chuàng)建客戶端自尋址套接字最便利的選擇是 DatagramSocket()函數(shù),而服務(wù)器端則是DatagramSocket(int port)函數(shù),如果未能創(chuàng)建自尋址套接字或綁定自尋址套接字到本地端口,那么這兩個函數(shù)都將拋出一個 SocketException, 一旦程序創(chuàng)建了 DatagramSocket對象,那么程序分別調(diào)用 send(DatagramPacket dgp)和 receive(DatagramPacket dgp)來發(fā)送和接收自尋址數(shù)據(jù)包。 ( c) 多點(diǎn)傳送和 MulticastSocket 類 : 前面的例子顯示了服務(wù)器程序線程發(fā)送單一的消息(通過流套接字或自尋址套接字)給唯一的客戶端程序,這種行為被稱為單點(diǎn)傳送( unicasting),多數(shù)情況都不適合于單點(diǎn)傳送,比如,搖滾歌手舉辦一場音樂會將通過互聯(lián)網(wǎng)進(jìn)行播放,畫面和聲音的質(zhì)量依賴于傳輸速度,服務(wù)器程序要傳送大約 10 億字節(jié)的數(shù)據(jù)給客戶端程序,使用單點(diǎn)傳送,那么每個客戶程序都要要復(fù)制一份數(shù)據(jù),如果,互聯(lián)網(wǎng)上有 10000 個客戶端要收看這個音樂會,那么服務(wù)器程序通過 Inter 要傳送 10000G 的數(shù)據(jù),這必然導(dǎo)致網(wǎng)絡(luò)阻塞,降低網(wǎng)絡(luò)的傳輸速度。 如果服務(wù)器程序要將同一信息發(fā)送給多個客戶端,那么服務(wù)器程序和客戶程序可以利用多點(diǎn)傳送( multicasting)方式進(jìn)行通信。多點(diǎn)傳送 就是服務(wù)程序?qū)S玫亩帱c(diǎn)傳送組的 IP 地址和端口發(fā)送一系列自尋址數(shù)據(jù)包,通過加入操作 IP 地址被多點(diǎn)傳送 Socket注冊,通過這個點(diǎn)客戶程序可以接收發(fā)送給組的自尋址包(同樣客戶程序也可以給這個組發(fā)送自尋址包),一旦客戶程序讀完所有要讀的自尋址數(shù)據(jù)包,那么可以通過離開組操作離開多點(diǎn)傳送組。 詳細(xì)設(shè)計 服務(wù)器端設(shè)計 服務(wù)程序部分服務(wù)器啟動時,先設(shè)置自己的本地端口,因為有些端口有其固定的作用,如 80 是 WWW 端口,故盡可能選擇不可能使用的端口,將連接狀態(tài)設(shè)置為家假,然后開始進(jìn)行偵聽。當(dāng)偵聽到有計算機(jī)要求 與服務(wù)器進(jìn)行對話,就接受,并記錄下客戶機(jī)的地址,端口,客戶機(jī)的匿名,將連接狀態(tài)設(shè)置為真,將上述內(nèi)容存入一個用戶自定義的數(shù)組中,進(jìn)行動態(tài)維護(hù),用戶自定義數(shù)據(jù)類型如下 : Private Type ActiveUser Clinent As String 記錄客戶的 IP 地址; Client Name As String 記錄客戶的匿名; Client Port As Integer 記錄當(dāng)前會話的端口; Client Connected As Boolean 客戶連接狀態(tài), True 表示已連接, False 表示沒有連接。 做 完這些工作以后,服務(wù)器再調(diào)入一個新控件,進(jìn)行新的偵聽,如此反復(fù)不斷,如果有客戶推出,則關(guān)閉相應(yīng)的連接,注意不能再客戶端關(guān)閉連接,否則會產(chǎn)生錯誤,只班級網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計 27 能由服務(wù)器關(guān)閉連接,服務(wù)器程序主要對象設(shè)置。 處理連接請求過程,當(dāng)遠(yuǎn)程計算機(jī)要求連接時,服務(wù)器首先檢查用戶自定義數(shù)組中是否有空閑位置(因為在談話中途,肯定會有人退出,所以會產(chǎn)生空閑位置),如果有則選擇空閑位置給予要求連接的客戶,否則將數(shù)組維數(shù)加一,將之給予請求連接的遠(yuǎn)程節(jié)點(diǎn),錯誤處理主要是忽略兩個或兩個以上的客戶同時要求連接時產(chǎn)生的地址沖突現(xiàn)象。 服務(wù)器端程序主要 實現(xiàn)代碼如下 ]7[ : import 。 import 。 import 。 import 。 import 。 import 。 import 。 public class client { protected BufferedReader in。 protected PrintWriter out。 Socket socket。 MainFrame call。 public static int port = 1988。 public client(MainFrame call) throws UnknownHostException, IOException { =call。 } public void startConnect() { try { socket=new Socket((()),port)。 in=new BufferedReader(new InputStreamReader(()))。 out = new PrintWriter(())。 if(() == true) { processMsg(與 ++連接成功 )。 } 陜西科技大學(xué)畢業(yè) 設(shè)計說明書 28 else { processMsg(與 +()+連接成功 )。 } (hello)。 ()。 } catch(Exception Te) { ()。 if(()== true) { processMsg(與 ++連接失敗 )。 } else { processMsg(與 +()+連接失敗)。 } } } public String receiveMsg()throws IOException//接收數(shù)據(jù) { String msg = new String()。 try { msg = ()。 }catch(IOException e) { ()。 ()。 ()。 ()。 msg = new String(User have been disconnect!)。 } 班級網(wǎng)絡(luò)聊天系統(tǒng)開發(fā)與設(shè)計 29 return msg。 } p
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1