TCP版本的 echo server 和 echo client

这里附上博主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();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_62718027/article/details/131390163