當前位置:編程學習大全網 - 源碼下載 - 瘋狂Java講義:使用ServletSocket創建TCP服務器端

瘋狂Java講義:使用ServletSocket創建TCP服務器端

  使用ServletSocket創建TCP服務器端

 從圖 中看上去TCP通信的兩個通信實體之間並沒有服務器端 客戶端之分 但那是兩個通信實體已經建立虛擬鏈路之後的示意圖 在兩個通信實體沒有建立虛擬鏈路之前 必須有壹個通信實體先做出 主動姿態 主動接收來自其他通信實體的連接請求

 Java中能接受其他通信實體連接請求的類是ServerSocket ServerSocket對象用於監聽來自客戶端的Socket連接 如果沒有連接 它將壹直處於等待狀態 ServerSocket包含壹個監聽來自客戶端連接請求的方法

 Socket accept() 如果接收到壹個客戶端Socket的連接請求 該方法將返回壹個與客戶端Socket對應的Socket(如圖 所示每個TCP連接有兩個Socket) 否則該方法將壹直處於等待狀態 線程也被阻塞

 為了創建ServerSocket對象 ServerSocket類提供了如下幾個構造器

 ServerSocket(int port) 用指定的端口port來創建壹個ServerSocket 該端口應該是有壹個有效的端口整數值 ~

 ServerSocket(int port int backlog) 增加壹個用來改變連接隊列長度的參數backlog

 ServerSocket(int port int backlog InetAddress localAddr) 在機器存在多個 IP地址的情況下 允許通過localAddr這個參數來指定將ServerSocket綁定到指定的IP地址

 當ServerSocket使用完畢 應使用ServerSocket的close()方法來關閉該ServerSocket 通常情況下 服務器不應該只接受壹個客戶端請求 而應該不斷地接受來自客戶端的所有請求 所以Java程序通常會通過循環 不斷地調用ServerSocket的accept()方法 如下代碼片段所示

 //創建壹個ServerSocket 用於監聽客戶端Socket的連接請求

 ServerSocket ss = new ServerSocket( )

 //采用循環不斷接受來自客戶端的請求

 while (true)

 {

 //每當接受到客戶端Socket的請求 服務器端也對應產生壹個Socket

 Socket s = ss accept()

 //下面就可以使用Socket進行通信了

 …

 }

 上面程序中創建ServerSocket沒有指定IP地址 則該ServerSocket將會綁定到本機默認的IP地址 程序中使用 作為該ServerSocket的端口號 通常推薦使用 以上的端口 主要是為了避免與其他應用程序的通用端口沖突

? 返回目錄 瘋狂Java講義

? 編輯推薦

? Java程序性能優化 讓妳的Java程序更快 更穩定

? 新手學Java 編程

lishixinzhi/Article/program/Java/hx/201311/27266

  • 上一篇:如何防止網站商業程序被盜版,代碼中如何設計授權?
  • 下一篇:開機出現Explorer.exe錯誤!
  • copyright 2024編程學習大全網