import java.io.*;
import java.net.*;
import java.util.*;
class Sender{
public static void main(String args[]){
try{
// サーバー名の取得
String strServer = args[0];
// ポート番号の取得
int nPort = Integer.parseInt(args[1]);
if( nPort < 1000 || nPort > 65535 )
throw new NumberFormatException();
// 送信用バッファを作成する
String str = "ただいま、" + (new Date()).toString() + "です \n";
byte[] buffer = str.getBytes();
// 送信用のDatagramPacketを作成する
InetAddress address = InetAddress.getByName(strServer);
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, nPort);
// DatagramSocket作成
DatagramSocket socket = new DatagramSocket();
// 送信
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 Receiver{
public static void main(String args[]){
try{
// 受信用バッファを作成する
byte[] buffer = new byte[100];
// ポート番号の取得
int nPort = Integer.parseInt(args[0]);
if( nPort < 1000 || nPort > 65535 )
throw new NumberFormatException();
// 空のDatagramPacketを作成する
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
// DatagramSocket作成
DatagramSocket socket = new DatagramSocket(nPort);
// 受信する
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);
}
}
}
|