【正文】
程模型包含三部分。因此,線程被認(rèn)為是以CPU為主體的行為。 Java中的線程模型簡(jiǎn)介線程是程序中的一個(gè)執(zhí)行流。[13]客戶機(jī)首先創(chuàng)建一個(gè)Socket對(duì)象,用于和服務(wù)器的通信。這個(gè)新的Socket對(duì)象將連接到一些新端口,負(fù)責(zé)處理與之相對(duì)應(yīng)客戶機(jī)的通信。服務(wù)器使用ServerSocket類來(lái)處理客戶機(jī)的連接請(qǐng)求。由于Server端的輸出流是服務(wù)端的輸入流,Server端的輸入流是服務(wù)器的輸出流,反之亦然,所以,Client與Server可以通過(guò)讀寫(xiě)各自Socket進(jìn)行交流。圖2 服務(wù)器監(jiān)聽(tīng)客戶的連接請(qǐng)求服務(wù)器一旦接收到客戶機(jī)的連接請(qǐng)求,服務(wù)器選擇一個(gè)新的端口并綁定一個(gè)新的Socket與客戶端建立的Socket對(duì),這個(gè)過(guò)程如圖3所示。通常在服務(wù)器的指定端口被綁定一個(gè)Socket,此時(shí)服務(wù)器只是處于等待狀態(tài),監(jiān)聽(tīng)客戶的連接請(qǐng)求。響應(yīng)圖1 C/S技術(shù)模型Client/Server 結(jié)構(gòu)的優(yōu)點(diǎn)是速度快, 缺點(diǎn)是當(dāng) Server 進(jìn)行更新時(shí), Client 也必需更新[6]。C/S軟件技術(shù)是一種通用的,基于消息的技術(shù)。在這里,水平伸縮(Horizontal scaling)意味著方便地添加和刪除客戶工作站。4.可伸縮性是C/S系統(tǒng)的一個(gè)很重要特性。2.前端與后端的任務(wù)對(duì)計(jì)算機(jī)資源有完全不同的要求,這些計(jì)算機(jī)資源包括:處理機(jī)速度,內(nèi)存,磁盤(pán)速度,容量,輸入輸出設(shè)備等。前端被稱為客戶端,后端被稱為服務(wù)器端。 C/S模型介紹C/S是Client/Server的縮寫(xiě),即客戶機(jī)/服務(wù)器技術(shù),也可以稱為C/S模型。JBuilder5環(huán)境是用純Java編寫(xiě)。JBuilder5是一組全面的高效率工具,使用Java編程語(yǔ)言創(chuàng)建可伸縮的,高性能的和具有不依賴于平臺(tái)性能的應(yīng)用程序。 JBuilder5介紹JBuilder5是美國(guó)Borland公司最新推出的遵循SUN公司J2EE標(biāo)準(zhǔn)的集成開(kāi)發(fā)工具,是目前使用最廣泛的Java開(kāi)發(fā)工具之一。有連接通信一般要經(jīng)歷以下四個(gè)基本步驟:創(chuàng)建Socket,建立連接;打開(kāi)連接到Socket的輸入/輸出流;按照一定的協(xié)議對(duì)Socket進(jìn)行讀/寫(xiě)操作;關(guān)閉Socket。Socket是兩個(gè)進(jìn)程間通信鏈的端點(diǎn),每個(gè)Socket有兩個(gè)流:一個(gè)輸入流和一個(gè)輸出流。無(wú)連接方式開(kāi)銷小于有連接方式,但是所提供的數(shù)據(jù)傳輸服務(wù)不可靠,不能保證數(shù)據(jù)報(bào)一定到達(dá)目的地[14]。通信鏈路提供了可靠的,全雙工的字節(jié)流服務(wù)。Socket通信機(jī)制提供了兩種通信方式:有連接方式(TCP)和無(wú)連接方式(UDP數(shù)據(jù)報(bào))。每個(gè)服務(wù)程序都在一個(gè)眾所周知的端口上提供服務(wù),而想使用服務(wù)的客戶端程序則需要連接該端口。Socket是Java中需要編寫(xiě)較低層次的網(wǎng)絡(luò)通信程序(例如Client/Server應(yīng)用程序)時(shí)提供的一種通訊機(jī)制。1999年6月SUN公司重新定義了Java技術(shù)的結(jié)構(gòu),將Java2平臺(tái)分為三個(gè)版本:標(biāo)準(zhǔn)版(J2SE),企業(yè)版(J2EE)和微縮版(J2ME)。第2章 開(kāi)發(fā)工具及相關(guān)技術(shù)介紹 Java與Socket簡(jiǎn)介Java語(yǔ)言是Sun公司于1991年創(chuàng)建的一種新的程序設(shè)計(jì)語(yǔ)言?;贑/S的Java聊天室系統(tǒng)它的開(kāi)發(fā)意義在于為人們之間相互交流提供了一個(gè)快捷、方便的應(yīng)用平臺(tái)。3.客戶端能夠快速準(zhǔn)確的連接上服務(wù)器端,發(fā)送的信息經(jīng)服務(wù)器端可以轉(zhuǎn)發(fā)給其他客戶。主要解決的問(wèn)題包括:1.服務(wù)器端和客戶端要實(shí)現(xiàn)界面化,并且界面盡量人性化。聊天室的開(kāi)放性、信息資源的多樣性可為網(wǎng)站發(fā)展提供優(yōu)良的廣告宣傳和商品推廣,這是其他網(wǎng)站活動(dòng)方式所無(wú)法比擬的,聊天室趨向方便化、快捷化是各大網(wǎng)站成長(zhǎng)的必然經(jīng)歷的階段[8]。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和普及,多數(shù)網(wǎng)站紛紛利用自己的網(wǎng)絡(luò)資源建立聊天室,并為客戶提供各種各樣便捷的服務(wù)。聊天室中聊天內(nèi)容的及時(shí)性和準(zhǔn)確性是極其重要的,它主要針對(duì)當(dāng)今社會(huì)快節(jié)奏生活,人們沒(méi)有很多時(shí)間來(lái)等信息。這對(duì)各種類型的網(wǎng)絡(luò)提供一次很大的挑戰(zhàn)與機(jī)遇,特別是通過(guò)網(wǎng)絡(luò)進(jìn)行信息交互的這種活動(dòng),更加使網(wǎng)絡(luò)的經(jīng)營(yíng)方式充滿了活力和機(jī)動(dòng)性[5]。 multithread。 java。利用聊天室這種影響將會(huì)降到最小,人與人之間的交流將會(huì)更加方便、快捷,可以大幅度提高人們的交流效率。這種服務(wù)器集中轉(zhuǎn)發(fā)信息的優(yōu)點(diǎn)是通信穩(wěn)定,缺點(diǎn)是增加了服務(wù)器端的負(fù)擔(dān)。主要包括登陸連接、服務(wù)器管理、客戶聊天三大功能。為了能實(shí)時(shí)、準(zhǔn)確地實(shí)現(xiàn)與朋友、親人、同事之間的聯(lián)系,網(wǎng)絡(luò)聊天是一種比較經(jīng)濟(jì)實(shí)惠的途徑,其發(fā)展前景可觀。伴隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,通信業(yè)也蒸蒸日上。摘 要隨著時(shí)代的發(fā)展,時(shí)間、信息兩個(gè)概念顯得越來(lái)越突出。在第一時(shí)間掌握第一手資料,是打敗對(duì)手取得成功的秘訣?,F(xiàn)在個(gè)人電腦已普及到各個(gè)家庭、單位中。本系統(tǒng)利用Java中的socket網(wǎng)絡(luò)編程和多線程技術(shù)實(shí)現(xiàn)。管理員和用戶經(jīng)過(guò)登陸界面分別進(jìn)入到服務(wù)器端和客戶端,客戶通過(guò)socket連接服務(wù)器,服務(wù)器通過(guò)多線程技術(shù)轉(zhuǎn)發(fā)信息到其他客戶端。傳統(tǒng)的面對(duì)面之間的交流由于受地域和時(shí)間的影響,已經(jīng)滿足不了當(dāng)今社會(huì)的需求。關(guān)鍵詞:聊天室;Java;socket;多線程;C/S AbstractWith the development and progress of the times, the concept of time and information bee more and more outstanding. So, the winners will be the ones who first grasp the firsthand data. As the internet technology is developing rapidly, the munications industry is also thriving. Personal puters are extensively spreading among all families and units. In order to municate with family members, friends and workmates accurately but on real time, chatting on net is one of the more economical and substantial ways, which has a favorable prospect. This system takes effect by socket network program of Java and multithread,It has three main functions of login, servers manage and chatting. The administrator and user log on serverside and clientside separately by the login box. The clients connect themselves to servers through the socket, then the servers send these messages to other clients by multithread. The advantage of forwarding informations centrally results in a stable munication, but its weakness leads to a burden to the serverside. Traditional facetoface munication is restricted by time and region, which can not meet the demands of modern society. Chatting room can reduce the influence above to the minimum, and the munication among people will be more convenient and quick, the intercourse efficiency is increased greatly.Keywords: chatting room。 socket。 c/s目 錄第1章 緒 論 1 1 1 1第2章 開(kāi)發(fā)工具及相關(guān)技術(shù)介紹 3 Java與Socket簡(jiǎn)介 3 JBuilder5介紹 3 C/S模型介紹 4 用Java實(shí)現(xiàn)Socket模型 5 Java中的線程模型簡(jiǎn)介 6 SQL SERVER 2000簡(jiǎn)介 6第3章 系統(tǒng)需求分析 8 系統(tǒng)任務(wù)描述 8 系統(tǒng)功能分析 8 系統(tǒng)的功能需求 8. 9 10 系統(tǒng)可行性分析 11第4章 系統(tǒng)設(shè)計(jì) 13 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì) 13 數(shù)據(jù)庫(kù)設(shè)計(jì) 14 系統(tǒng)功能模塊詳細(xì)設(shè)計(jì) 15第5章 編碼與實(shí)現(xiàn) 18 系統(tǒng)主要模塊代碼 1停止服務(wù)器 18 19 聊天室發(fā)送信息 20 服務(wù)器轉(zhuǎn)發(fā)信息 20 服務(wù)器顯示在線用戶人數(shù) 21 系統(tǒng)測(cè)試 21第6章 結(jié) 論 25參考文獻(xiàn) 26致 謝 27附 錄 28附錄A 源程序主要代碼 28第1章 緒 論隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和普及,Internet已經(jīng)成為人們獲取有關(guān)信息和相互交流的重要途徑之一,越來(lái)越多的機(jī)構(gòu)和組織開(kāi)始利用網(wǎng)絡(luò)資源傳遞、發(fā)布、收集和管理信息?;贑/S模型的Java聊天室是應(yīng)用于網(wǎng)絡(luò)交流領(lǐng)域的系統(tǒng),它的主要特點(diǎn)有:1.通用性:聊天室系統(tǒng)在各種各樣的網(wǎng)絡(luò)中均可以運(yùn)行,系統(tǒng)具有較高的可移植性和使用性;2.實(shí)用性:系統(tǒng)具有良好的人機(jī)界面,便于各類使用者操作,提供了人性化的服務(wù);3.及時(shí)性:通過(guò)網(wǎng)絡(luò)的連接,系統(tǒng)雙方的交流可以在短期內(nèi)進(jìn)行,相比與傳統(tǒng)面對(duì)面的交流節(jié)省不少時(shí)間[15]。本系統(tǒng)提供的功能便于系統(tǒng)使用雙方的信息交流,有效的提高了使用者的使用效率,縮短了使用者的使用時(shí)間[6]。中國(guó)的一些龍頭網(wǎng)站,如sina,有很多聊天室,供國(guó)內(nèi)外的不同的人們進(jìn)行不同話題的討論,不僅將會(huì)員發(fā)展由國(guó)內(nèi)延伸到國(guó)際,更是為提高自身的知名度提供了方便[2]。本系統(tǒng)針對(duì)聊天室用戶的需要,建立了客戶端和服務(wù)器端。2.服務(wù)器端能夠正確的啟動(dòng),并且時(shí)刻監(jiān)視客戶端,保持與客戶端的連接。4.異常處理,對(duì)于用戶的不正確的操作系統(tǒng)應(yīng)該有提示。大型網(wǎng)站可以通過(guò)聊天室來(lái)提高自身的知名度,增加的訪問(wèn)流量。該語(yǔ)言與C/C++等傳統(tǒng)程序設(shè)計(jì)語(yǔ)言不同,具有突出的平臺(tái)獨(dú)立性,高度的可靠性和安全性特點(diǎn)。目前,Java技術(shù)除了沿著J2SE,J2EE,J2ME三種技術(shù)為主脈絡(luò)迅速發(fā)展外,還密切關(guān)注Internet環(huán)境下各種新型信息技術(shù)的發(fā)展,并能夠迅速與這些新技術(shù)融合,積極支持這些新技術(shù)應(yīng)用的開(kāi)發(fā)[1]。Socket是兩個(gè)程序進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通信的端點(diǎn),一般由一個(gè)地址加上一個(gè)端口號(hào)來(lái)標(biāo)識(shí)。通過(guò)Socket的數(shù)據(jù)是原始字節(jié)流信息,通信雙方必須根據(jù)約定的協(xié)議對(duì)數(shù)據(jù)進(jìn)行處理與解釋[15]。有連接方式中,通信雙方在開(kāi)始時(shí)必須進(jìn)行一次連接過(guò)程,建立一條通信鏈路。無(wú)連接方式中,通信雙方不存在一個(gè)連接過(guò)程,一次網(wǎng)絡(luò)I/O以一個(gè)數(shù)據(jù)報(bào)形式進(jìn)行,而且每次網(wǎng)絡(luò)I/O可以和不同主機(jī)的不同進(jìn)程進(jìn)行。Java的有連接通信采用流式I/O模式。只要向Socket的輸出流寫(xiě),一個(gè)進(jìn)程就可以通過(guò)網(wǎng)絡(luò)連接向其他進(jìn)程發(fā)送數(shù)