🔍 내가 배운 내용 요약
ServerSocket
으로 클라이언트 요청을 기다리고, 클라이언트는 Socket
으로 서버에 접속클래스 | 역할 |
---|---|
Socket |
클라이언트 측 소켓 생성 및 통신 |
ServerSocket |
서버 소켓 생성, 클라이언트 연결 대기 |
InetAddress |
IP 주소 관리 |
URL , URLConnection |
HTTP 등 프로토콜을 통한 통신 지원 |
Java
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try (ServerSocket server = new ServerSocket(12345)) {
System.out.println("서버 대기 중...");
Socket client = server.accept(); // 클라이언트 연결 대기
System.out.println("클라이언트 접속: " + client.getInetAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println("받은 메시지: " + line);
out.write("서버 응답: " + line + "\\n");
out.flush();
}
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost", 12345);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in))) {
String input;
System.out.println("서버에 메시지 입력 (종료하려면 'exit' 입력)");
while (!(input = keyboard.readLine()).equalsIgnoreCase("exit")) {
out.write(input + "\\n");
out.flush();
String response = in.readLine();
System.out.println("서버로부터: " + response);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ServerSocket
생성 → accept()
로 클라이언트 연결 대기