DatagramSocket 04
브로드캐스트용 IP주소에 데이터를 전달하면 해당 네트워크에 속하는 모든 컴퓨터에서 실행되는 수신측 프로그램에서 데이터를 수신할 수 있다.
브로드캐스트 주소로 데이터를 전송하는 프로그램
import java.net.*;
import java.io.*;
/* 브로드캐스트용 IP 주소를 이용하여 211.109.249.* 에 속하는 모든 컴퓨터에게 데이터를 전송하는 예
* 네트워크 상황에 따라 안 될 수도 있음.
* 일련의 숫자를 전송할 때 브로드캐스트용 주소로 전송하여 감청하고 있는 모든 컴퓨터에서
* 수신할 수 있도록 한다.
*/
class DatagramBroadcast {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket();
InetAddress ia = InetAddress.getByName("211.109.249.255");
/* 브로드캐스트용 주소로 일련의 숫자를 전송한다*/
for(int i=0;i<=100;i++) {
byte[] data = {(byte)i};
// 123번 포트에서 감청하고 있는 모든 컴퓨터에 데이터를 전송한다.
DatagramPacket dp = new DatagramPacket(data, data.length, ia, 1234);
ds.send(dp);
try{
Thread.sleep(1000);
}catch(InterruptedException ie){}
}
}
}
브로드캐스트되는 데이터를 수신하는 프로그램 (일반 Datagram 수신 프로그램과 동일함)
import java.net.*;
import java.io.*;
/* 브로드캐스트 IP 주소에 속하는 컴퓨터에서 실행되는 수신측 프로그램*/
class BroadcastReceiver {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(1234);
byte[] data = new byte[1024];
DatagramPacket dp = new DatagramPacket(data, data.length);
int len = 0;
while(true) {
ds.receive(dp);
byte[] received = dp.getData();
System.out.println(received[0]);
}
}
}