使用ServerSocket實現簡單的服務器功能(Java)

  • 簡單的一個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();
			}
		}

	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章