UDPTimeServer.java Source code

Java tutorial

Introduction

Here is the source code for UDPTimeServer.java

Source

import java.io.IOException;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.DatagramChannel;

public class UDPTimeServer {

    public final static int DEFAULT_PORT = 37;

    public static void main(String[] args) throws IOException {

        int port = 37;

        ByteBuffer in = ByteBuffer.allocate(8192);
        ByteBuffer out = ByteBuffer.allocate(8);
        out.order(ByteOrder.BIG_ENDIAN);
        SocketAddress address = new InetSocketAddress(port);
        DatagramChannel channel = DatagramChannel.open();
        DatagramSocket socket = channel.socket();
        socket.bind(address);
        System.err.println("bound to " + address);
        while (true) {
            try {
                in.clear();
                SocketAddress client = channel.receive(in);
                System.err.println(client);
                long secondsSince1970 = System.currentTimeMillis();
                out.clear();
                out.putLong(secondsSince1970);
                out.flip();

                out.position(4);
                channel.send(out, client);
            } catch (Exception ex) {
                System.err.println(ex);
            }
        }
    }
}