네트워크 통신은 컴퓨터와 컴퓨터 사이에 데이터를 주고받는 과정을 말합니다. 소켓 통신은 이러한 네트워크 통신을 위해 사용되는 방식 중 하나로, 소켓을 이용하여 데이터를 송수신하는 방법입니다.
소켓(Socket)이란?
소켓은 컴퓨터 사이에서 데이터를 주고받기 위한 인터페이스를 제공하는 소프트웨어 개념입니다. 네트워크 통신을 위한 작은 통신 단자라고 할 수 있습니다.
소켓은 클라이언트와 서버 간의 연결을 수립하고 데이터를 전송하고 수신하는 역할을 합니다. 소켓은 IP 주소와 포트 번호를 사용하여 컴퓨터 간의 통신을 가능하게 합니다.
네트워크 통신의 종류
-
TCP (Transmission Control Protocol) TCP는 신뢰성 있는 연결 지향형 프로토콜입니다. 데이터를 보내기 전에 연결을 먼저 수립하고, 데이터의 손실이나 손상 여부를 확인하여 안정적으로 데이터를 전송합니다.
-
UDP (User Datagram Protocol) UDP는 비연결형 프로토콜로, 데이터의 신뢰성을 보장하지 않습니다. 연결을 수립하지 않고 데이터를 바로 전송하므로 TCP보다는 빠른 전송이 가능합니다. 그러나 데이터의 손실이나 손상이 발생할 수 있습니다.
Java에서의 네트워크 통신 및 소켓 통신
Java에서 네트워크 통신을 하기 위해서는 java.net
패키지를 사용합니다. 이 패키지에는 소켓(Socket), 서버 소켓(ServerSocket) 등 네트워크 관련 클래스가 포함되어 있습니다.
클라이언트 소켓 사용 예제
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
String serverIP = "localhost";
int serverPort = 12345;
try {
Socket socket = new Socket(serverIP, serverPort);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, Server.".getBytes());
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
서버 소켓 사용 예제
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
int serverPort = 12345;
try {
ServerSocket serverSocket = new ServerSocket(serverPort);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
System.out.println("Received: " + new String(buffer, 0, length));
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
위 예제 코드에서는 클라이언트에서 서버로 “Hello, Server.”라는 문자열을 전송하고, 서버에서는 해당 문자열을 출력합니다.
이처럼 Java에서는 Socket
과 ServerSocket
클래스를 사용하여 소켓 통신을 쉽게 구현할 수 있습니다.
결론
네트워크 통신과 소켓 통신은 컴퓨터 사이의 데이터 전송을 위해 중요한 개념입니다. Java는 Socket
과 ServerSocket
클래스를 제공하여 손쉽게 네트워크 통신을 구현할 수 있습니다.