import java.io.*;
import java.net.*;
import java.util.*;
class MultiSender{
public static void main(String args[]){
try{
/* サーバー名の取得 */
String strServer = args[0];
InetAddress address = InetAddress.getByName(strServer);
/* ポート番号の取得 */
int nPort = Integer.parseInt(args[1]);
/* MulticastSocket作成 */
MulticastSocket socket = new MulticastSocket();
socket.setTTL((byte)1);
while(true){
/* 送信用バッファを作成する */
String str = "ただいま、" + (new Date()).toString() + "です ";
byte[] buffer = str.getBytes();
/* 送信用のDatagramPacketを作成する */
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, nPort);
/* 送信 */
socket.send(packet);
}
/* クローズ(ここに来ることはないのでコメントアウト) */
/* socket.close(); */
}catch(NumberFormatException e){
System.err.println("引数はサーバー名とポート番号です。");
}catch(IndexOutOfBoundsException e){
System.err.println("引数はサーバー名とポート番号です。");
}catch(UnknownHostException e){
System.err.println("サーバー(" + args[0] + ")が見つかりません");
}catch(IOException e){
System.err.println("入出力エラーです" + e);
}catch(Exception e){
System.err.println(e);
}
}
}
import java.io.*;
import java.net.*;
import java.util.*;
class MultiReceiver{
public static void main(String args[]){
try{
/* 受信用バッファを作成する */
byte[] buffer = new byte[100];
/* サーバー名の取得 */
String strServer = args[0];
/* ポート番号の取得 */
int nPort = Integer.parseInt(args[1]);
if( nPort < 1000 || nPort > 65535 )
throw new NumberFormatException();
/* アドレス作成 */
InetAddress address = InetAddress.getByName(strServer);
/* MulticastSocket作成 */
MulticastSocket socket = new MulticastSocket(nPort);
/* 空のDatagramPacketを作成する */
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
/* グループに参加 */
socket.joinGroup(address);
/* 受信する */
while(true){
socket.receive(packet);
System.out.println( new String(packet.getData()) );
}
/* クローズ(ここに来ることはないのでコメントアウト) */
/* socket.close(); */
}catch(NumberFormatException e){
System.err.println("引数はポート番号です。1000〜65535までの数字を設定してください。");
}catch(IndexOutOfBoundsException e){
System.err.println("引数はポート番号です。1000〜65535までの数字を設定してください。");
}catch(IOException e){
System.err.println("入出力エラーです" + e);
}catch(Exception e){
System.err.println(e);
}
}
}
|