[java] UDP 소켓 프로그래밍의 특징과 예시 코드
UDP(User Datagram Protocol)는 신뢰성이 낮지만 전송 속도가 빠른 프로토콜입니다. UDP를 이용한 소켓 프로그래밍은 데이터그램을 이용하여 메시지를 주고 받는 작업을 수행할 수 있습니다. UDP 소켓 프로그래밍의 특징과 예시 코드를 살펴보겠습니다.
UDP 소켓 프로그래밍의 특징
UDP 소켓 프로그래밍은 다음과 같은 특징을 가지고 있습니다.
- 신뢰성이 낮음: UDP는 데이터 전송시 손실이 발생할 수 있고, 순서가 바뀔 수 있습니다.
- 연결이 없음: TCP와 달리 연결 설정이 없기 때문에 빠른 전송이 가능합니다.
- 단순함: TCP에 비해 간단하고 빠른 데이터 전송이 가능합니다.
UDP 소켓 프로그래밍 예시 코드
다음은 Java를 사용한 간단한 UDP 소켓 프로그래밍 예시 코드입니다.
import java.net.*;
public class UDPServer {
public static void main(String args[ ]) {
try {
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println("Received: " + message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
위 예시 코드는 9876 포트를 통해 데이터그램을 수신하는 UDP 서버를 구현한 것입니다. 데이터를 수신할 때까지 계속해서 대기하며, 데이터를 수신하면 그 내용을 콘솔에 출력합니다.
import java.net.*;
public class UDPClient {
public static void main(String args[ ]) {
try {
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("localhost");
byte[] sendData = "Hello, Server!".getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
clientSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
UDPClient 클래스는 로컬호스트로 “Hello, Server!”라는 메시지를 9876 포트를 통해 데이터그램으로 전송합니다.
이러한 예시 코드를 이용하여 UDP 소켓 프로그래밍을 시작해볼 수 있습니다.
이상으로 UDP 소켓 프로그래밍의 특징과 예시 코드에 대해 알아보았습니다. UDP를 이용한 소켓 프로그래밍을 통해 신뢰성은 낮지만 전송 속도가 빠른 네트워크 통신을 구현할 수 있습니다.
참고 자료:
- Oracle Java Documentation: https://docs.oracle.com/javase/8/docs/api/java/net/package-summary.html