java的Socket API提供了一個很方便的對象接口進行網絡編程。本文用一個簡單的TCP Echo Server做例子,演示了如何使用Java完成一個網絡服務器。
用作例子的TCP Echo Server是按以下方式工作的:
當一個客戶端通過TCP連接到服務器后,客戶端可以通過這個連接發送數據到服務端,而服務端接收到數據后會把這些數據用同一個TCP連接發送回客戶端。服務端會一直保持這個連接直到客戶端關閉它為止。
因為服務器需要能同時處理多個客戶端,我們先選用一個常見的多線程服務模型:
讓一個Thread負責監聽服務端口,當有新的連接建立的時候,這個監聽的Thread會為這個連接創建一個新的Thread來處理它。這樣,服務器可以接受多個連接,并讓多個Thread來分別處理它們。
以下是相應的服務端程序:
public class EchoServer implements Runnable {
public void run() {
try {
ServerSocket svr = new ServerSocket(7);
while (true) {
Socket sock = svr.accept();
new Thread(new Echosession(sock)).start();
新聞熱點
疑難解答