[java] Socket과 ServerSocket 클래스의 사용법

Java에서는 SocketServerSocket 클래스를 사용하여 네트워크 통신을 구현할 수 있습니다. Socket은 클라이언트에 사용되며, ServerSocket은 서버에 사용됩니다.

Socket 클래스

Socket 클래스는 클라이언트와 서버 간의 통신을 담당합니다. 클라이언트가 서버로 요청을 보내거나 서버에서 데이터를 받을 때 사용됩니다.

클라이언트 소켓 생성

Socket socket = new Socket("서버 IP 주소", 포트 번호);

위의 예제는 클라이언트 소켓을 생성하는 방법입니다. "서버 IP 주소"에는 서버의 IP 주소를 입력하고, 포트 번호에는 서버가 Listen하는 포트 번호를 입력합니다.

데이터 송수신

OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();

// 데이터 송신
outputStream.write("Hello, Server!".getBytes());

// 데이터 수신
byte[] buffer = new byte[1024];
int readBytes = inputStream.read(buffer);
String receivedData = new String(buffer, 0, readBytes);

위의 예제는 클라이언트 소켓에서 데이터를 송수신하는 방법입니다. getOutputStream()으로 출력 스트림을 얻어 데이터를 송신하고, getInputStream()으로 입력 스트림을 얻어 데이터를 수신합니다.

ServerSocket 클래스

ServerSocket 클래스는 서버 측에서 클라이언트의 연결을 받아들이는 역할을 합니다.

서버 소켓 생성

ServerSocket serverSocket = new ServerSocket(포트 번호);

위의 예제는 서버 소켓을 생성하는 방법입니다. 포트 번호에는 클라이언트가 접속할 포트 번호를 입력합니다.

클라이언트 연결 수락

Socket socket = serverSocket.accept();

위의 예제는 클라이언트의 연결을 수락하는 방법입니다. accept() 메서드를 호출하면 클라이언트가 접속할 때까지 블로킹됩니다. 클라이언트가 접속하면 새로운 Socket 객체가 반환됩니다.

데이터 송수신

OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();

// 데이터 수신
byte[] buffer = new byte[1024];
int readBytes = inputStream.read(buffer);
String receivedData = new String(buffer, 0, readBytes);

// 데이터 송신
outputStream.write("Hello, Client!".getBytes());

위의 예제는 서버 소켓에서 클라이언트와 데이터를 송수신하는 방법입니다. 클라이언트의 연결이 수락되면 클라이언트와 통신할 Socket 객체를 얻어 데이터를 송수신할 수 있습니다.

마무리

이상으로 Java에서 SocketServerSocket 클래스를 사용하여 네트워크 통신을 구현하는 방법에 대해 알아보았습니다. 이를 통해 클라이언트와 서버 간의 데이터 전달이 가능해집니다.

더 자세한 내용은 Oracle Java Documentation을 참고하시기 바랍니다.