閱讀691 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java 網絡教程: ServerSocket

用java.net.ServerSocket實現java服務通過TCP/IP監聽客戶端連接,你也可以用Java NIO 來代替java網絡標準API,這時候需要用到 ServerSocketChannel。

創建一個 ServerSocket連接

以下是一個創建ServerSocket類來監聽9000端口的一個簡單的代碼

ServerSocket serverSocket = new ServerSocket(9000);

監聽請求的連接

要獲取請求的連接需要用ServerSocket.accept()方法。該方法返回一個Socket類,該類具有普通java Socket類的所有特性。代碼如下:

ServerSocket serverSocket = new ServerSocket(9000); boolean isStopped = false;while(!isStopped){   Socket clientSocket = serverSocket.accept();    //do something with clientSocket}

對每個調用了accept()方法的類都隻獲得一個請求的連接。

另外,請求的連接也隻能在線程運行的server中調用了accept()方法之後才能夠接受請求。線程運行在server中其它所有的方法上的時候都不能接受客戶端的連接請求。所以”接受”請求的線程通常都會把Socket的請求連接放入一個工作線程池中,然後再和客戶端連接。更多關於多線程服務端設計的文檔請參考 java多線程服務

關閉客戶端Socket

客戶端請求執行完畢,並且不會再有該客戶端的其它請求發送過來的時候,就需要關閉Socket連接,這和關閉一個普通的客戶端Socket連接一樣。如下代碼來執行關閉:

socket.close();

關閉服務端Sockets

要關閉服務的時候需要關掉 ServerSocket連接。通過執行如下代碼:

serverSocket.close();

最後更新:2017-05-23 13:31:43

  上一篇:go  Java IO: 字節和字符數組
  下一篇:go  前端魔法堂:onsubmit和submit事件處理函數怎麼不生效呢?