模拟echo服务器:
package com.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServer {
private static final int SERVER_SOCKET_PORT = 6378;
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(SERVER_SOCKET_PORT);
System.out.println("Echo server is started.");
while (true) {
Socket client = serverSocket.accept();
new Thread(new ClientHandler(client)).start();
}
}
private static class ClientHandler implements Runnable {
private Socket client;
public ClientHandler(Socket client) {
this.client = client;
}
@Override
public void run() {
try (BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter pw = new PrintWriter(client.getOutputStream())) {
String msg = br.readLine();
pw.println("已收到 " + client.getInetAddress() + " 的信息:" + msg);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
模拟客户端:
package com.test
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.PrintWriter
import java.net.Socket
import java.util.Scanner
public class EchoClient {
public static void main(String[] args) throws Exception {
Socket client = new Socket("192.168.0.104", 6378)
try (BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()))
PrintWriter pw = new PrintWriter(client.getOutputStream())) {
System.out.println("Please enter your words:")
Scanner scanner = new Scanner(System.in)
String msg = scanner.nextLine()
pw.println(msg)
pw.flush()
String echo = br.readLine()
System.out.println("Echo message from server: " + echo)
}
}
}