这里附上博主UDP版本的echo server 和 echo client
如何编写一个最简单的 udp 版本的 echo server 和 echo client(小白也懂!)_幻荼的博客-CSDN博客
目录
目的
效果
关于服务端的代码解释
服务端代码
客户端
关于客户端代码解释
客户端代码
目的
编写一个TCP版本的echo server 和 echo client
发送消息,并原封不动返回消息
效果
关于服务端的代码解释
服务端代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class Server {ServerSocket socket = null;Server(int port) throws IOException {socket = new ServerSocket(port);}public void start() throws IOException {System.out.println("服务器启动!");// while(true){Socket receiveSocket = socket.accept();connection(receiveSocket);//}}public String process(String reveiveString){return reveiveString;}public void connection(Socket clientSocket){System.out.printf("[%s:%d] 客户端上线!\n", clientSocket.getInetAddress().toString(),clientSocket.getPort());try(InputStream inputStream = clientSocket.getInputStream();OutputStream outputStream = clientSocket.getOutputStream()){PrintWriter response = new PrintWriter(outputStream);Scanner scanner = new Scanner(inputStream);while(true){if(!scanner.hasNext()){System.out.printf("[%s:%d] 客户端下线!\n", clientSocket.getInetAddress().toString(),clientSocket.getPort());break;}String receiveString = scanner.next();String responseString = process(receiveString);response.println(responseString);response.flush();System.out.printf("[%s:%d] req: %s; resp : %s\n",clientSocket.getInetAddress().toString(), clientSocket.getPort(), receiveString, responseString);}} catch (IOException e) {throw new RuntimeException(e);}}public static void main(String[] args) throws IOException {Server server = new Server(9090);server.start();}
}
客户端
关于客户端代码解释
客户端代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;public class Client {Socket socket = null;Client(String ip,int port) throws IOException {socket = new Socket(ip,port);}public void start(){Scanner sc = new Scanner(System.in);try(InputStream inputStream = socket.getInputStream();OutputStream outputStream = socket.getOutputStream()) {Scanner scanner = new Scanner(inputStream);PrintWriter printWriter = new PrintWriter(outputStream);while(true){System.out.println("请输入发送的消息");String sendString =sc.next();printWriter.println(sendString);printWriter.flush();String receiveString = scanner.next();System.out.printf("req: %s; resp: %s\n", sendString, receiveString);}} catch (IOException e) {throw new RuntimeException(e);}}public static void main(String[] args) throws IOException {Client client = new Client("127.0.0.1",9090);client.start();}
}