熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java網絡協議 TCP和客戶端/服務器范型

2022-06-13   來源: Java核心技術 

  在網絡編程中(同樣在其它形式的通訊中例如數據庫編程)使用套接字的應用程序也被分為兩類客戶端程序和服務器程序你可能對客戶端/服務器編程術語比較熟悉盡管這個術語的准確意思你不一定清楚下面的范例就是討論這個主題

   客戶端/服務器范型

  客戶端/服務器范型把軟件分為兩類客戶端程序和服務器程序客戶端軟件啟動一個連接並發送請求而服務器軟件監聽連接並處理請求在UDP編程環境中沒有建立實際的連接並且UDP應用程序可以在相同的套接字上建立並接收請求在TCP環境中兩台計算機之間建立了連接客戶端/服務器范型是相對應的

  當軟件作為客戶端或者服務器的時候它嚴格地定義了角色以更容易適應我們所熟悉的思維模型軟件要麼啟動請求要麼處理請求在兩種角色之間切換使系統更加復雜即使允許切換在某個特定的時刻軟件程序也只能是客戶端而另一個必須是服務器如果兩個同時是客戶端就沒有服務器處理請求了

  客戶端/服務器范型是一個重要的理論概念它廣泛用於實際應用程序中目前也有其它的通訊模型例如對等(peer to peer)模型在這種模型中每一方都可以啟動通訊但是客戶端/服務器概念是更加流行的選擇因為它很簡單並且在多數網絡編程中使用

  網絡客戶端

  網絡客戶端啟動連接通常處理網絡事務服務器程序用於實現客戶端的請求客戶端不用實現服務器的請求盡管客戶端處於控制地位但是服務器端仍然有一些功能客戶端可以要求服務器刪除本地文件系統的所有文件但是服務器並不是必須執行這個任務的

  網絡客戶端使用雙方都同意的通訊標准(即網絡協議)與服務器對話例如HTTP客戶端使用的命令組就與郵件客戶端使用的不同而且目的也完成不同把HTTP連接到郵件服務器或郵件客戶端連接到HTTP服務器要麼會出現一個錯誤消息要麼出現一個客戶端不能理解的錯誤消息因為這個原因作為協議規格的一部分必須使用某個端口號這樣客戶端才能定位服務器Web服務器通常運行在端口上而其它一些服務器可能運行在非標准的端口上URL的習慣是不列出端口的它假定使用端口

  網絡服務器

  網絡服務器的角色是綁定某個特定的端口(客戶端使用它定位服務器)並且監聽新的連接盡管客戶端是臨時的並且只有在用戶選中的時候才運行但是服務器程序必須不間斷地運行(即使實際上沒有已連接的客戶端)期望某個客戶端在某個時刻需要該服務服務器程序通常作為數據自適應監視器進程引用使用Unix用法它持久的運行而且一般在該服務器程序的主機啟動時啟動因此服務器一直等待直到某個客戶端建立到該服務器端口的連接有些服務器程序在某個時刻只能處理單個連接其它一些服務器程序可以通過使用多線程同時處理多個連接

  當開始連接後服務器就服從客戶端它等待客戶端發送請求並且忠實地處理它們(可是服務器可以響應錯誤信息特別是當請求違反某些重要地協議規則或有安全風險的時候)某些協議(例如HTTP/)通常在每個連接中只允許一個請求而其它一些協議(例如POP)支持一系列請求服務器可以通過發送響應或錯誤消息應答客戶端的請求學習新的網絡協議(編寫客戶端或服務器)與學習一種新的語言相似只是語法改變了但是典型情況下它的命令的數量更小使事情更簡單服務器的行為一部分由協議決定一部分由開發者決定(某些命令是可選的服務器不一定支持)


From:http://tw.wingwit.com/Article/program/Java/hx/201311/11143.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.