- 簡單的一個socketServer,啓動後使用本地電腦執行telnet 127.0.0.1 8189 進行訪問。
- 通過Telnet客戶端輸入內容,服務端將客戶端輸入的內容進行打印。 若客戶端輸入,Bye, 則客戶端與服務器斷開連接,服務端也停止服務。
- 客戶端輸入操作步驟: Enter鍵開始, 鍵入文本, Enter鍵發送。 如此循環進行通信。
- 也可以使用Socket客戶端進行訪問,以獲取服務端的提示信息。
package xyz.jangle.socket.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
/**
* 簡單的一個socketServer,啓動後使用本地電腦執行telnet 127.0.0.1 8189 進行訪問。
*
* 通過Telnet客戶端輸入內容,服務端將客戶端輸入的內容進行打印。 若客戶端輸入,Bye, 則客戶端與服務器斷開連接,服務端也停止服務。
*
* 客戶端輸入操作步驟: Enter鍵開始, 鍵入文本, Enter鍵發送。 如此循環進行通信。
*
* 2020年5月13日 11:21:26
*
* @author jangle
*
*
*/
public class ServerSocketTest {
public static void main(String[] args) throws IOException {
ServerSocket socketServer = null;
Scanner scanner = null;
try {
socketServer = new ServerSocket(8189);
Socket socket = socketServer.accept();
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
scanner = new Scanner(inputStream); //構造掃描器,掃描客戶端的輸入
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
PrintWriter printWriter = new PrintWriter(outputStreamWriter, true); //構造寫入器,向客戶端輸出提示信息
printWriter.println("Hello! Enter Bye to exits.");
boolean done = false;
while (!done && scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println("Echo:" + scanner.nextLine());
if (line.trim().equals("Bye")) {
done = true;
}
}
} catch (Exception e) {
} finally {
if (socketServer != null) {
socketServer.close();
}
if (scanner != null) {
scanner.close();
}
}
}
}