UDP는 User Datagram Protocol의 약자로, 데이터를 데이터그램 단위로 처리하는 프로토콜이다. 데이터그램이란 독립적인 관계를 지니는 패킷을 의미하며, UDP는 비연결형 프로토콜로 사전에 연결 설정 없이 데이터를 전달한다.
UDP는 RTP(Real Time Protocol), Multicast, DNS 등에서 사용된다.
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPServer {
public static void main(String[] args) {
try {
DatagramSocket socket = new DatagramSocket(9876);
byte[] buffer = new byte[1024];
while (true) {
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
String received = new String(packet.getData(), 0, packet.getLength());
System.out.println("Received: " + received);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPClient {
public static void main(String[] args) {
try {
DatagramSocket socket = new DatagramSocket();
InetAddress address = InetAddress.getByName("localhost");
byte[] buffer = "Hello, UDP Server".getBytes();
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, 9876);
socket.send(packet);
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
UDP는 비연결형 프로토콜로, 빠른 속도와 낮은 네트워크 부하를 자랑하지만, 신뢰성 있는 데이터 전송을 보장하지 않는다. 따라서 DNS, RTP, Multicast 등 신속한 전송이 필요하고 재전송이 불필요한 서비스에 적합하다. 상황에 맞게 적절히 사용하면 효율적인 네트워크 통신을 구현할 수 있다.