JAVA/포스팅

자바 UDP소켓 프로그래밍

짜집퍼박사(짜박) 2023. 11. 27. 14:42

UDP(User Datagram Protocol)는 비연결성이며 신뢰성이 낮은 프로토콜로, 데이터를 패킷 단위로 전송합니다. 자바에서 UDP 소켓 프로그래밍은 java.net 패키지의 DatagramSocket 및 DatagramPacket 클래스를 사용하여 구현됩니다. 아래는 간단한 UDP 소켓 프로그래밍 예제와 각 구성 요소에 대한 설명입니다.

 

UDP 클라이언트 예제

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPClient {
    public static void main(String[] args) {
        try {
            // 서버의 주소와 포트 번호 설정
            InetAddress serverAddress = InetAddress.getByName("localhost");
            int serverPort = 9876;

            // UDP 소켓 생성
            DatagramSocket socket = new DatagramSocket();

            // 전송할 데이터 생성
            String message = "Hello, Server!";
            byte[] sendData = message.getBytes();

            // DatagramPacket 생성 및 데이터 전송
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);
            socket.send(sendPacket);

            // 자원 해제
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

UDP 서버 예제

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
    public static void main(String[] args) {
        try {
            // 서버의 포트 번호 설정
            int serverPort = 9876;

            // UDP 소켓 생성
            DatagramSocket socket = new DatagramSocket(serverPort);
            System.out.println("서버 대기 중...");

            // 데이터 수신을 위한 DatagramPacket 생성
            byte[] receiveData = new byte[1024];
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);

            // 데이터 수신
            socket.receive(receivePacket);

            // 수신된 데이터 처리
            String receivedMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
            System.out.println("클라이언트로부터 받은 데이터: " + receivedMessage);

            // 자원 해제
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

 

설명

 

1. 클라이언트 코드

- DatagramSocket 클래스를 사용하여 UDP 소켓을 생성합니다.
- 전송할 데이터를 생성하고, DatagramPacket 클래스를 사용하여 데이터를 패킷으로 만듭니다.
- 패킷을 서버로 전송합니다.

 

2. 서버 코드

- DatagramSocket 클래스를 사용하여 UDP 소켓을 생성합니다.
- 데이터를 수신하기 위해 DatagramPacket 클래스를 사용하여 수신 패킷을 생성합니다.
- 서버는 대기 상태에 있으며, 클라이언트로부터 데이터를 수신하면 해당 데이터를 출력합니다.

 

3. 자원 해제

- 통신이 끝난 후에는 사용한 소켓을 닫아 자원을 해제합니다.

 

UDP는 연결이 없고 데이터 전송이 비신뢰성이기 때문에 데이터 손실이나 순서가 바뀔 수 있습니다. 따라서 신뢰성이 중요한 응용 프로그램에서는 TCP를 사용하는 것이 적합하며, UDP는 신속한 데이터 전송이 필요한 경우에 사용됩니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 TCP소켓 프로그래밍  (0) 2023.11.27
자바 소켓 프로그래밍  (0) 2023.11.27
자바 URLConnection  (0) 2023.11.27
자바 URL(Uniform Resource Location)  (0) 2023.11.27
자바 InetAddress  (0) 2023.11.27