TCP version of echo server and echo client

Attached here is the blogger's UDP version of echo server and echo client

How to write the simplest udp version of echo server and echo client (novices also understand!)_Huan Tu's Blog-CSDN Blog

Table of contents

 Purpose

Effect

About the server-side code explanation

Server code

client

About client code explanation

client code 


 Purpose

Write a TCP version of echo server and echo client

Send a message and return the message unchanged

Effect

 

About the server-side code explanation

 

 

 

 

Server code

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();
    }
}

client

About client code explanation

 

client code 

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();
    }
}

Guess you like

Origin blog.csdn.net/qq_62718027/article/details/131390163