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