這個範例主要功能是伺服器端的程式等待客戶的輸入,然後將讀取到的資訊回顯給客戶端,同時在伺服器端的控制台輸出。而客戶端從控制台接收訊息後,向客戶端發送輸入,並接收伺服器的回顯數據,然後顯示在控制台。
package com.javapp.ch11;
import java.io.*;
import java.net.*;
/**
* Description: 具有「回顯」功能的伺服器端與用戶端程式
*/
public class EchoientDemo {
// 伺服器端的服務連接埠。
public static final int SERVERPORT = 990;
public static void main(String[] args) {
連接套接字。
Socket s = new Socket("localhost",SERVERPORT);
// 新建網路連線的輸入流。
BufferedReader in = new BufferedReader(new InputStreamReader(s
// 新建網路連線的自動刷新的輸出流。
PrintWriter out = new PrintWriter(new BufferedWriter(
// 以System.in建構InputStreamReader,再建構BufferedReader。
BufferedReader stdin = new BufferedReader(
System.out.println("Enter a string, Enter BYE to exit! ");
while (true) {
// 以連結傳送資料至網路上的字串,即傳送資料至伺服器端。
out.println(stdin.readLine());
會
}
System.out.println(str);
.close();
} catch (IOException e) {
System.err.println("IOException" e.getMessage());
🎜>上面客戶端程式中。首先用java.net包中的Socket類別建立一個連接套接字,其後應用的Socket對象的getInputStream方法從伺服器接收數據,並且應用Socket對象的getOuputStream方法發送數據到伺服器。建立完輸入輸出流,就可以像讀寫檔案的方式來讀寫資料。
支援多客戶端的「回顯」伺服器端程式碼如下:
複製程式碼
程式碼如下:
package com.javapp.ch11;
import java.io.*;
import java.net.*;
/**
* Description:支援多客戶端的「回顯」伺服器端程式
*/
public Server {
// 伺服器端的服務連接埠。
public static final int SERVERPORT = 990;
public static void main(String[] args) {
連接上的客戶端的序號。
int number = 1;
//建立伺服器端聆聽套接字。
ServerSocket s = new ServerSocket(SERVERPORT);
while (true) {
// 以接收要求,並建立連結套接字。
Socket incoming = s.accept();
System.out.println(incoming);
線程來進行伺服器端和客戶端的資料傳輸。
// 主程式繼續監聽是否有請求可使用。
Thread t = new EchoThread(incoming,number);
number ;
}
("IOException");
}
}
}
class EchoThread extends Thread { public EchoThread(Socket incoming,int number ) {
s = incoming;
n = number;
🎜> // 新建網路連線的輸入流。
BufferedReader in = new BufferedReader(new InputStreamReader(s
// 新建網路連線的自動刷新的輸出流。
PrintWriter out = new PrintWriter(new BufferedWriter(
System.out.println("Hello! Enter BYE to exit.");
// 回顯客戶端的輸入。
while (true) {
// 從網路連線中讀取一行,即接收客戶端的資料。
會
} else {
System.out.println( "The client " n " entered BYE!");
break;
out.println ("Echo " n ": " line);
// 傳送至網路連線輸出一行,即傳送資料至客戶端。
out.println("Echo " n ": " line);
}
// 關閉套接字。
s.close();
} catch (IOException e) { }
}
}
在伺服器端程式中,先用java.net套件中的ServerSocket類別建立一個伺服器端偵聽套接字。其後套用ServerSocket類別的accept方法等待並接收使用者請求。當伺服器每接收到一個連線請求後,就會啟動一個執行緒來單獨處理伺服器和客戶端的資料傳輸。伺服器端資料的接收和發送與上面介紹的客戶端資料的發送和介紹相同。