1 . 伺服器端
public class Server {
public static void main(String[] args) {
try {
// 1. 綁定端口,并監聽此端口
ServerSocket serverSocket = new ServerSocket(6000);
System.out.println("伺服器啟動成功...");
// 2. 調用accept()方法開始監聽,等待用戶端的連結
// 使accept()阻塞等待用戶端請求,有客戶請求到來則産生一個Socket對象,并繼續執行
Socket socket = serverSocket.accept();
// 3. 擷取輸入流,并調取用戶端資訊
// 由socket對象得到輸入流,并構造相應的BufferedReader對象
String line;
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
// 4. 由socket對象得到輸出流,并構造PrintWriter對象
PrintWriter writer = new PrintWriter(socket.getOutputStream());
// 5. 由系統的标準輸入裝置構造BufferedReader對象
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 6. 從标準輸入列印從用戶端度讀入的字元串
line = br.readLine();
while(!line.endsWith("end")){
writer.println(line);
writer.flush();
System.out.println("Server: " + line);
System.out.println("Client: " + in.readLine());
line = br.readLine();
}
// 7. 釋放
writer.close();
in.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("伺服器啟動失敗...");
}
}
}
- 用戶端
public class Client {
public static void main(String[] args) {
try {
// 1. 建立用戶端Socket,指定伺服器位址和端口
Socket socket = new Socket("127.0.0.1", 6000);
System.out.println("用戶端啟動成功...");
// 2. 擷取輸出流, 向伺服器發送消息
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter writer = new PrintWriter(socket.getOutputStream());
// 3. 擷取輸入流,并讀取伺服器端的響應資訊
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readLine;
readLine = br.readLine();
while(!readLine.equals("end")){
writer.println(readLine);
writer.flush();
System.out.println("Client: " + readLine);
System.out.println("Server: " + in.readLine());
readLine = br.readLine();
}
// 4. 釋放資源
writer.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
System.out.println("未知主機");
} catch (IOException e) {
e.printStackTrace();
System.out.println("用戶端啟動失敗");
}
}
}
- 運作時首先開啟伺服器端,再打開用戶端。在用戶端控制台中輸入消息,接下來在伺服器端控制台數輸入消息,可以看到用戶端發送的消息。