[java] 서버와 클라이언트 간에 소켓 통신 구현하기
이번에는 자바를 사용하여 서버와 클라이언트 간에 소켓 통신을 구현하는 방법에 대해 알아보겠습니다. 소켓을 이용한 통신은 네트워크를 통해 데이터를 주고받을 수 있는 강력한 방법입니다.
서버 구현
먼저, 서버를 구현해보겠습니다. 서버는 클라이언트로부터 연결을 대기하고, 클라이언트가 연결되면 데이터를 주고받을 수 있습니다.
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("서버 대기 중...");
Socket clientSocket = serverSocket.accept();
System.out.println("클라이언트가 연결되었습니다.");
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = in.readLine();
System.out.println("클라이언트로부터 받은 메시지: " + message);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
out.println("서버에서 보낸 응답");
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
클라이언트 구현
이어서, 클라이언트를 구현해보겠습니다. 클라이언트는 서버에 연결하고 데이터를 주고받을 수 있습니다.
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("클라이언트에서 보낸 메시지");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response = in.readLine();
System.out.println("서버로부터 받은 응답: " + response);
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
이제 두 소스 코드를 실행하여 서버와 클라이언트 사이에 메시지를 주고받을 수 있습니다.
위의 예시는 간단한 텍스트 데이터를 주고받는 방법을 다루고 있지만, 실제 애플리케이션에서는 이를 확장하여 복잡한 데이터 형식이나 보안 기능을 구현할 수 있습니다.
소켓 통신은 네트워크 프로그래밍의 기본이며, 자바를 통해 이를 구현하는 것은 매우 강력하고 유용한 기술입니다.
참고 자료
위의 링크는 자바 공식 문서에서 제공하는 소켓 통신 관련 자료로, 소켓 통신에 대한 더 자세한 정보를 얻을 수 있습니다.