国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java在C/S網絡中的應用

2019-11-18 10:45:54
字體:
來源:轉載
供稿:網友

  隨著java語言的日益流行,非凡是Java與InternetWeb的密切結合,使它在全球取得了巨大的成功。Java語言以其獨立于平臺、面向對象、分布式、多線索及完善的安全機制等特色,成為現代信息系統建設中的良好的開發平臺和運行環境。
  一、Java網絡應用模型
  和Internet上的許多環境一樣,完整的Java應用環境實際上也是一個客戶機/服務器環境,更確切地說是瀏覽器/服務器模型(即Browser/Server模型,簡稱Web模型)。但與傳統的客戶機/服務器(C/S)的二層結構不同,應用Java的Web模型是由三層結構組成的。傳統的C/S結構通過消息傳遞機制,由客戶端發出請求給服務器,服務器進行相應處理后經傳遞機制送回客戶端。而在Web模型中,服務器一端被分解成兩部分:一部分是應用服務器(Web服務器),另一部分是數據庫服務器,Java網絡應用結構模型如圖所示:
  HTTP
  TCP/ip
  Java網絡應用模型
  針對分布式計算環境,Java通過其網絡類庫提供了良好的支持。對數據分布,Java提供了一個URL(UniformResourceLocator)對象,利用此對象可打開并訪問網絡上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。對操作分布,Java的客戶機/服務器模式可以把運算從服務器分散到客戶一端(服務器負責提供查詢結果,客戶機負責組織結果的顯示),從而提高整個系統的執行效率,增加動態可擴充性。Java網絡類庫是Java語言為適應Internet環境而進行的擴展。另外,為適應Internet的不斷發展,Java還提供了動態擴充協議,以不斷擴充Java網絡類庫。
  Java的網絡類庫支持多種Internet協議,包括Telnet,FTP和HTTP(WWW),與此相對應的Java網絡類庫的子類庫為:
  Java.net
  Java.net.ftp
  Java.net.www.content
  Java.net.www.Html
  Java.net.www.http
  這些子類庫各自容納了可用于處理Internet協議的類和方法。其中,java.net用于處理一些基本的網絡功能,包括遠程登錄(Telnet);java.net.ftp用于處理ftp協議;java.net.www.content用于處理WWW頁面內容;java.net.www.html和java.net.www.http則分別提供了對HTML語言和HTTP協議的支持。
  二、客戶機/服務器環境下的Java應用程序
  客戶機/服務器在分布處理過程中,使用基于連接的網絡通信模式。該通信模式首先在客戶機和服務器之間定義一套通信協議,并創建一Socket類,利用這個類建立一條可靠的鏈接;然后,客戶機/服務器再在這條鏈接上可靠地傳輸數據。客戶機發出請求,服務器監聽來自客戶機的請求,并為客戶機提供響應服務。這就是典型的“請求--應答”模式。下面是客戶機/服務器的一個典型運作過程:
  1.服務器監聽相應端口的輸入;
  2.客戶機發出一個請求;
  3.服務器接收到此請求;
  4.服務器處理這個請求,并把結果返回給客戶機;
  5.重復上述過程,直至完成一次會話過程。
  按照以上過程,我們使用Java語言編寫一個分別針對服務器和客戶機的應用程序(application)。該程序在服務器上時,程序負責監聽客戶機請求,為每個客戶機請求建立Socket連接,從而為客戶機提供服務。本程序提供的服務為:讀取來自客戶機的一行文本,反轉該文本,并把它發回給客戶機。
  通過該程序實例我們看到,使用Java語言設計C/S程序時需要注重以下幾點:
 ?。?)、服務器應使用ServerSocket類來處理客戶機的連接請求。當客戶機連接到服務器所監聽的端口時,ServerSocket將分配一新的Socket對象。這個新的Socket對象將連接到一些新端口,負責處理與之相對應客戶機的通信。然后,服務器繼續監聽ServerSocket,處理新的客戶機連接。
  Socket和ServerSocket是Java網絡類庫提供的兩個類。
 ?。?)、服務器使用了多線程機制。Server對象本身就是一個線程,它的run()方法是一個無限循環,用以監聽來自客戶機的連接。每當有一個新的客戶機連接時,ServerSocket就會創建一個新的Socket類實例,同時服務器也將創建一新線程,即一個Connection對象,以處理基于Socket的通信。與客戶機的所有通信均由這個Connection對象處理。Connection的構造函數將初始化基于Socket對象的通信流,并啟動線程的運行。與客戶機的通信以及服務的提供,均由Connection對象處理。
 ?。?)、客戶機首先創建一Socket對象,用以與服務器通信。之后需創建兩個對象:DataInputStream和PRintStream,前者用以從Socket的InputStream輸入流中讀取數據,后者則用于往Socket的OutputStream中寫數據。最后,客戶機程序從標準輸入(如:控制臺)中讀取數據,并把這些數據寫到服務器,在從服務器讀取應答消息,然后大這些應答消息寫到到準輸出。
  以下本別為服務器和客戶機端的源程序清單。本程序在NT4.0網絡環境(TCP/IP)下使用JDK1.1調試通過。
  ----1.編寫服務器類Java程序
  //Server.java
  importjava.io.*;
  importjava.net.*;
  publicclassServerextendsThread
  {
  publicfinalstaticintDefault_Port=6543;
  protectdintport;
  protectdServerSockrtlisten_socket;
  //定義出錯例程:
  假如出現異常錯誤,退出程序。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴塘县| 大理市| 株洲县| 通化县| 静宁县| 石景山区| 鄂温| 建始县| 都昌县| 拉萨市| 上林县| 芒康县| 驻马店市| 平昌县| 仪陇县| 资溪县| 翼城县| 龙川县| 天峻县| 嘉善县| 罗定市| 广水市| 沙雅县| 都安| 安图县| 香河县| 武邑县| 九江市| 惠安县| 兰溪市| 舟山市| 柏乡县| 大足县| 新化县| 卓资县| 凤山县| 大厂| 越西县| 邵阳县| 惠州市| 大田县|