java c s是什么_Java在C/S
隨著Java語(yǔ)言的日益流行,特別是Java與InternetWeb的密切結(jié)合,使它在全球取得了巨大的成功。Java語(yǔ)言以其獨(dú)立于平臺(tái)、面向?qū)ο蟆⒎植际健⒍嗑€索及完善的安全機(jī)制等特色,成為現(xiàn)代信息系統(tǒng)建設(shè)中的良好的開發(fā)平臺(tái)和運(yùn)行環(huán)境。
一、Java網(wǎng)絡(luò)應(yīng)用模型
和Internet上的許多環(huán)境一樣,完整的Java應(yīng)用環(huán)境實(shí)際上也是一個(gè)客戶機(jī)/服務(wù)器環(huán)境,更確切地說(shuō)是瀏覽器/服務(wù)器模型(即Browser/Server模型,簡(jiǎn)稱Web模型)。
但與傳統(tǒng)的客戶機(jī)/服務(wù)器(C/S)的二層結(jié)構(gòu)不同,應(yīng)用Java的Web模型是由三層結(jié)構(gòu)組成的。傳統(tǒng)的C/S結(jié)構(gòu)通過(guò)消息傳遞機(jī)制,由客戶端發(fā)出請(qǐng)求給服務(wù)器,服務(wù)器進(jìn)行相應(yīng)處理后經(jīng)傳遞機(jī)制送回客戶端。而在Web模型中,服務(wù)器一端被分解成兩部分:一部分是應(yīng)用服務(wù)器(Web服務(wù)器),另一部分是數(shù)據(jù)庫(kù)服務(wù)器,Java網(wǎng)絡(luò)應(yīng)用結(jié)構(gòu)模型如圖所示:
HTTP
TCP/IP
Java網(wǎng)絡(luò)應(yīng)用模型
針對(duì)分布式計(jì)算環(huán)境,Java通過(guò)其網(wǎng)絡(luò)類庫(kù)提供了良好的支持。
對(duì)數(shù)據(jù)分布,Java提供了一個(gè)URL(UniformResourceLocator)對(duì)象,利用此對(duì)象可打開并訪問網(wǎng)絡(luò)上的對(duì)象,其訪問方式與訪問本地文件系統(tǒng)幾乎完全相同。對(duì)操作分布,Java的客戶機(jī)/服務(wù)器模式可以把運(yùn)算從服務(wù)器分散到客戶一端(服務(wù)器負(fù)責(zé)提供查詢結(jié)果,客戶機(jī)負(fù)責(zé)組織結(jié)果的顯示),從而提高整個(gè)系統(tǒng)的執(zhí)行效率,增加動(dòng)態(tài)可擴(kuò)充性。
Java網(wǎng)絡(luò)類庫(kù)是Java語(yǔ)言為適應(yīng)Internet環(huán)境而進(jìn)行的擴(kuò)展。另外,為適應(yīng)Internet的不斷發(fā)展,Java還提供了動(dòng)態(tài)擴(kuò)充協(xié)議,以不斷擴(kuò)充Java網(wǎng)絡(luò)類庫(kù)。
Java的網(wǎng)絡(luò)類庫(kù)支持多種Internet協(xié)議,包括Telnet,FTP和HTTP(WWW),與此相對(duì)應(yīng)的Java網(wǎng)絡(luò)類庫(kù)的子類庫(kù)為:
Java。
net
Java。net。ftp
Java。net。www。content
Java。net。www。html
Java。net。www。http
這些子類庫(kù)各自容納了可用于處理Internet協(xié)議的類和方法。其中,java。net用于處理一些基本的網(wǎng)絡(luò)功能,包括遠(yuǎn)程登錄(Telnet);java。
net。ftp用于處理ftp協(xié)議;java。net。www。content用于處理WWW頁(yè)面內(nèi)容;java。net。www。html和java。net。www。http則分別提供了對(duì)HTML語(yǔ)言和HTTP協(xié)議的支持。
二、客戶機(jī)/服務(wù)器環(huán)境下的Java應(yīng)用程序
客戶機(jī)/服務(wù)器在分布處理過(guò)程中,使用基于連接的網(wǎng)絡(luò)通信模式。
該通信模式首先在客戶機(jī)和服務(wù)器之間定義一套通信協(xié)議,并創(chuàng)建一Socket類,利用這個(gè)類建立一條可靠的鏈接;然后,客戶機(jī)/服務(wù)器再在這條鏈接上可靠地傳輸數(shù)據(jù)。客戶機(jī)發(fā)出請(qǐng)求,服務(wù)器監(jiān)聽來(lái)自客戶機(jī)的請(qǐng)求,并為客戶機(jī)提供響應(yīng)服務(wù)。這就是典型的“請(qǐng)求--應(yīng)答”模式。
下面是客戶機(jī)/服務(wù)器的一個(gè)典型運(yùn)作過(guò)程:
1.服務(wù)器監(jiān)聽相應(yīng)端口的輸入;
2.客戶機(jī)發(fā)出一個(gè)請(qǐng)求;
3.服務(wù)器接收到此請(qǐng)求;
4.服務(wù)器處理這個(gè)請(qǐng)求,并把結(jié)果返回給客戶機(jī);
5.重復(fù)上述過(guò)程,直至完成一次會(huì)話過(guò)程。
按照以上過(guò)程,我們使用Java語(yǔ)言編寫一個(gè)分別針對(duì)服務(wù)器和客戶機(jī)的應(yīng)用程序(Application)。
該程序在服務(wù)器上時(shí),程序負(fù)責(zé)監(jiān)聽客戶機(jī)請(qǐng)求,為每個(gè)客戶機(jī)請(qǐng)求建立Socket連接,從而為客戶機(jī)提供服務(wù)。本程序提供的服務(wù)為:讀取來(lái)自客戶機(jī)的一行文本,反轉(zhuǎn)該文本,并把它發(fā)回給客戶機(jī)。
通過(guò)該程序?qū)嵗覀兛吹?#xff0c;使用Java語(yǔ)言設(shè)計(jì)C/S程序時(shí)需要注意以下幾點(diǎn):
(1)、服務(wù)器應(yīng)使用ServerSocket類來(lái)處理客戶機(jī)的連接請(qǐng)求。
當(dāng)客戶機(jī)連接到服務(wù)器所監(jiān)聽的端口時(shí),ServerSocket將分配一新的Socket對(duì)象。這個(gè)新的Socket對(duì)象將連接到一些新端口,負(fù)責(zé)處理與之相對(duì)應(yīng)客戶機(jī)的通信。然后,服務(wù)器繼續(xù)監(jiān)聽ServerSocket,處理新的客戶機(jī)連接。
Socket和ServerSocket是Java網(wǎng)絡(luò)類庫(kù)提供的兩個(gè)類。
(2)、服務(wù)器使用了多線程機(jī)制。Server對(duì)象本身就是一個(gè)線程,它的run()方法是一個(gè)無(wú)限循環(huán),用以監(jiān)聽來(lái)自客戶機(jī)的連接。每當(dāng)有一個(gè)新的客戶機(jī)連接時(shí),ServerSocket就會(huì)創(chuàng)建一個(gè)新的Socket類實(shí)例,同時(shí)服務(wù)器也將創(chuàng)建一新線程,即一個(gè)Connection對(duì)象,以處理基于Socket的通信。
與客戶機(jī)的所有通信均由這個(gè)Connection對(duì)象處理。Connection的構(gòu)造函數(shù)將初始化基于Socket對(duì)象的通信流,并啟動(dòng)線程的運(yùn)行。與客戶機(jī)的通信以及服務(wù)的提供,均由Connection對(duì)象處理。
(3)、客戶機(jī)首先創(chuàng)建一Socket對(duì)象,用以與服務(wù)器通信。
之后需創(chuàng)建兩個(gè)對(duì)象:DataInputStream和PrintStream,前者用以從Socket的InputStream輸入流中讀取數(shù)據(jù),后者則用于往Socket的OutputStream中寫數(shù)據(jù)。最后,客戶機(jī)程序從標(biāo)準(zhǔn)輸入(如:控制臺(tái))中讀取數(shù)據(jù),并把這些數(shù)據(jù)寫到服務(wù)器,在從服務(wù)器讀取應(yīng)答消息,然后大這些應(yīng)答消息寫到到準(zhǔn)輸出。
全部
總結(jié)
以上是生活随笔為你收集整理的java c s是什么_Java在C/S的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机办公应用软件初级,电脑办公软件有哪
- 下一篇: erp开发和java开发区别_Java程