본문으로 바로가기

UDP 네트워크 프로그래밍 샘플

category Programing/JAVA 2018. 10. 24. 19:59
반응형

UDP 통신을 위한 Sender Receiver 예제.

UDP 를 통한 byte 배열 전달


UDP 통신 프로그래밍 예제


UDP SenderTest


import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.net.UnknownHostException;


public class UDPSenderTest {

//1. DatagramSocket 객체를 생성(데이터 날아갈 활주로 역할)

//2. 보내고자 하는 데이터를 바이트 배열로 준비

//3. 준비된 데이터와 상대방의 IP주소 Port 번호를 매개변수로 해서 DatagramPacket을 준비

//4. 1에 3을 실어서 날리기.

public static void main(String[] args) {

DatagramSocket socket = null;

try {

//1

socket = new DatagramSocket(5000);

//2

String msg = "Hello World, Welcome to Hell!!!!!!!!!!!!!!!!!!";

byte[] data = msg.getBytes();

//3

DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.0.138"), 5000);

//4

socket.send(packet);

// 소켓에 포트지정, 빈바이트배열, 빈 패킷 준비해야함(수신하려면)

byte[] buf = new byte[512];

DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);

socket.receive(receivePacket);

System.out.println("내가보낸 Data:"+new String(buf).trim());

} catch (SocketException e) {

e.printStackTrace();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally {

//if( socket != null)

socket.close();

}

}

}




UDP Receiver

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.SocketException;


public class UDPReceiverTest {

//1. 사용할 포트를 지정하여 DtagramSocket을 생성

//2. 빈 Byte배열을 준비

//3. 빈 Byte배열과 연결된 빈 Packet을 준비(DatagramPacket)

//4. 1에 3을 대놓고 기다리기

public static void main(String[] args) {

DatagramSocket socket = null;

try {

System.out.println("기다리는중...");

socket = new DatagramSocket(5000);

byte[] buf = new byte[512];

DatagramPacket packet = new DatagramPacket(buf, buf.length);

socket.receive(packet);

System.out.println(new String(buf).trim());

System.out.println("송신IP:"+packet.getAddress());


DatagramPacket sendPacket = new DatagramPacket(buf, buf.length, packet.getAddress(), 5000);

socket.send(sendPacket);

} catch (SocketException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}



반응형