본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

이론

루프백 주소, 네트워크에서 자기 자신을 가리키는 특별한 주소

루프백 주소

네트워크에서 자기 자신을 가리키는 특별한 주소 ( 127.0.0.1, ::1 )

이 주소를 사용하면 호스트 자신에 대한 네트워크 통신을 시뮬레이션할 수 있다.

 

간단한 에코 프로그램
소켓 통신을 시뮬레이션하는 코드를 확인해보자.

https://standout.tistory.com/1516

 

두 컴퓨터 간의 데이터 교환을 가능하게 하는 엔드포인트, 소켓 Socket

소켓 Socket소켓은 네트워크에서 데이터를 읽고 쓰는 다양한 메서드를 제공하여 통신을 가능하게 한다. 소켓이란 두 컴퓨터 간의 데이터 교환을 가능하게 하는 엔드포인트(endpoint)일반적으로 소

standout.tistory.com

클라이언트와 서버 프로그램을 만들어 클라이언트가 서버로 메시지를 보내고, 

서버가 해당 메시지를 다시 클라이언트에게 돌려준다.

import java.io.*;
import java.net.*;

public class EchoServer {
    public static void main(String[] args) {
        try {
            // 서버 소켓 생성 및 포트 8080에 바인딩
            ServerSocket serverSocket = new ServerSocket(8080, 50, InetAddress.getByName("127.0.0.1"));
            System.out.println("Server started. Waiting for client...");

            // 클라이언트 연결을 대기하고, 연결되면 클라이언트 소켓 생성
            Socket clientSocket = serverSocket.accept();
            System.out.println("Client connected.");

            // 클라이언트로부터 입력을 받을 BufferedReader 생성
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            // 클라이언트에게 출력을 보낼 PrintWriter 생성
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            // 클라이언트로부터 메시지를 받아 에코하고, 클라이언트에게 전송
            String message;
            while ((message = in.readLine()) != null) {
                System.out.println("Client: " + message);
                out.println("Server Echo: " + message);
            }

            // 스트림과 소켓 닫기
            in.close();
            out.close();
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
import java.io.*;
import java.net.*;

public class EchoClient {
    public static void main(String[] args) {
        try {
            // 서버에 연결하기 위한 소켓 생성
            Socket socket = new Socket("127.0.0.1", 8080);
            System.out.println("Connected to server.");

            // 서버와 통신할 BufferedReader 및 PrintWriter 생성
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            // 사용자로부터 메시지 입력 받을 BufferedReader 생성
            BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
            String message;
            while (true) {
                // 사용자로부터 메시지 입력 받음
                System.out.print("Enter message to server: ");
                message = userInput.readLine();
                // 서버에 메시지 전송
                out.println(message);
                // 서버로부터 받은 에코 메시지 출력
                System.out.println("Server Echo: " + in.readLine());
            }

            // 스트림과 소켓 닫기
            // in.close();
            // out.close();
            // userInput.close();
            // socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}