0

NTP(Network Time Protocol)から時間をかけるためにいくつかのコードを使用しました。このリストから多くのサーバーを試しましたが、常に空の文字列を受け取ります。これはサーバーエラーか、コードに問題があるためかわかりません。

これが私のコードです:

String machine = "utcnist2.colorado.edu";
// standart port on Computer to take time of day on normal computer
final int daytimeport = 13;

Socket socket = null;
try {
    socket = new Socket(machine, daytimeport);
    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String time = reader.readLine();
    System.out.printf("%s says it is %s %n", machine, time);
} catch (UnknownHostException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        socket.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
4

1 に答える 1

2

明らかに、サーバーは 2 行を返します。reader.readLine();直前に追加String time = reader.readLine();すると機能します。

完全なコードは次のようになります。

    public static void main(String[] args) {
    String machine = "utcnist2.colorado.edu";
    // standart port on Computer to take time of day on normal computer
    final int daytimeport = 13;

    Socket socket = null;
    try {
        socket = new Socket(machine, daytimeport);
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        reader.readLine();
        String time = reader.readLine();
        System.out.printf("%s says it is %s %n", machine, time);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
于 2012-10-04T13:15:16.503 に答える