Java 응용

Java 응용 (9. Echo Server / Client)

Kw_w 2024. 4. 12. 09:09

1. 클라이언트가 서버로 메시지를 보낼 수 있는 환경을 구축

2. 포트번호는 개인의 환경에 맞추어 바꾸어 주면 됨

3. Server Code와 Client Code를 같은 패키지 안에 넣어주는 것을 권장

 

Server Code

package server_test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class EchoServer {
    private final ServerSocket serverSocket;

    public EchoServer() throws Exception{
        int port = 5099;
        serverSocket = new ServerSocket(port);
    }
    public void connection() throws IOException{
        System.out.println("waiting for client...");
        Socket socket = serverSocket.accept();
        System.out.println("connect to client...");

        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter pw = new PrintWriter(socket.getOutputStream());

        while (true){
            String msg = br.readLine();
            System.out.println("client mag : "+msg);

            pw.println("echo : "+msg);
            pw.flush();

            if(msg.equals("bye"))break;
        }
        br.close();
    }

    public static void main(String[] args) throws Exception{
        var server = new EchoServer();
        server.connection();
    }
}

 

Client Code

package server_test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class EchoClient {
    private Socket socket;
    public void connection() throws Exception{
        socket = new Socket(InetAddress.getLocalHost().getHostName(), 5099);
        PrintWriter pw = new PrintWriter(socket.getOutputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        BufferedReader inputStr = new BufferedReader(new InputStreamReader(System.in));

        String msg = "";
        while (!msg.contains("bye")){
            System.out.println("send to server msg");
            msg = inputStr.readLine();
            pw.println(msg);
            pw.flush();

            String echo = br.readLine();
            System.out.println("Server >> "+echo);
        }
        br.close();
    }

    public static void main(String[] args) throws Exception{
        var client = new EchoClient();
        client.connection();
    }
}