Java SE/DatagramSocket 04

DatagramSocket 04

Soul-Learner 2008. 4. 18. 18:07

브로드캐스트용 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]);
  }
 }
}