반응형

클라이언트

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class UDPEchoClient {
    public static void main(String args[]) throws IOException {
        int svrPort = 1234;
        int clnPort = 4321;

        String sbye = "";
        Scanner cin = new Scanner(System.in);

        DatagramSocket dgSocket = new DatagramSocket(clnPort);
        InetAddress remote_addr = InetAddress.getByName("127.0.0.1");

        do {
            System.out.print("전송할 메시지 : ");
            String msg = cin.nextLine().stripTrailing();
            if(msg.length() == 0) continue;

            DatagramPacket dgPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, remote_addr, svrPort);
            System.out.println("송신 메시지 크기 : " + dgPacket.getData().length);

            dgSocket.send(dgPacket);

            dgPacket = new DatagramPacket(new byte[100], 100);

            dgSocket.receive(dgPacket);
            msg = new String(dgPacket.getData(), 0, dgPacket.getLength());
            msg = msg.stripTrailing();
            System.out.printf("\n수신메시지 : %s\n메시지 크기 : %d\n\n", msg, msg.length());

            sbye = msg;
        }while (!sbye.endsWith("bye"));
        dgSocket.close();
    }
}

 

서버

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

public class UDPEchoServer {
    public static void main(String args[]) throws IOException {
        int svrPort = 1234;
        int clnPort = 4321;

        String sbye = "";

        //서버용 데이터그램 소켓 오브젝트 생성
        DatagramSocket dgSocket = new DatagramSocket(svrPort);

        System.out.println("서버 실행중");
        do {
            //최대 ㅅ수신 가능 크기는 65507바이트지만 100으로 설정정
           DatagramPacket dgPacket = new DatagramPacket(new byte[100], 100);

           //패킷 수신
            dgSocket.receive(dgPacket);
            String msg = new String(dgPacket.getData(), 0 , dgPacket.getLength());
            msg = msg.stripTrailing();
            System.out.printf("수신메시지 : %s 메시지 크기 : %d \n", msg, msg.length());

            dgPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, dgPacket.getAddress(), clnPort);

            dgSocket.send(dgPacket);

            sbye = msg;
        } while (!sbye.endsWith("bye"));
        dgSocket.close();
    }
}

 

UDP 소켓을 활용한 양방향 통신 예제

 

 

반응형

'잡개발' 카테고리의 다른 글

자바 파일 입출력 구현  (0) 2022.05.12
파워쉘 기기정보 유출 악성코드  (0) 2022.05.10