루프백 주소
네트워크에서 자기 자신을 가리키는 특별한 주소 ( 127.0.0.1, ::1 )
이 주소를 사용하면 호스트 자신에 대한 네트워크 통신을 시뮬레이션할 수 있다.
간단한 에코 프로그램
소켓 통신을 시뮬레이션하는 코드를 확인해보자.
https://standout.tistory.com/1516
클라이언트와 서버 프로그램을 만들어 클라이언트가 서버로 메시지를 보내고,
서버가 해당 메시지를 다시 클라이언트에게 돌려준다.
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();
}
}
}
'이론' 카테고리의 다른 글
URL과 URL의 구성: scheme host port path query fragment (0) | 2024.04.25 |
---|---|
동영상 회의에 사용되는 특별한 IP 주소: 멀티캐스트 주소 (0) | 2024.04.25 |
통신의 출발지 또는 도착지, 엔드포인트 endpoint (0) | 2024.04.25 |
포트번호, 0부터 65535까지의 범위의 통신식별 번호 (0) | 2024.04.25 |
인터넷의 중요한 기능과 리소스를 관리하는 비영리 단체, IANA (0) | 2024.04.25 |