import java.net.*;
import java.io.*;

public class UdpServer {
  public static void main(String[] argv) {
    try {
      // 使用するポート番号
      int port = Integer.parseInt(argv[0]);

      // 指定されたポート番号にソケットを作る
      DatagramSocket dgSock = new DatagramSocket(port);
      while (true) {
        // 受信パケット用データ領域の作成
        byte buff1[]= new byte[512];
        DatagramPacket pa1 = new DatagramPacket(buff1, buff1.length);
        dgSock.receive(pa1);  // パケット受信
        System.out.println("Received!");
        System.out.print(new String(pa1.getData()));
        System.out.println("addr: "+pa1.getAddress());
        System.out.println("port: "+pa1.getPort());

        // 送信パケットの作成
        DatagramPacket pa2 =
          new DatagramPacket(pa1.getData(), pa1.getLength(),
                             pa1.getAddress(), pa1.getPort());
        dgSock.send(pa2);
        System.out.println("Sent!");
      }
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}
