문제

Java에서 네트워킹을 수행하는 방법을 배우고 NTP 서버에서 시간을 얻는 첫 번째 간단한 예는 계속 Connectexception을 던지고 있습니다. 코드를 복사하여 붙여 넣을 것입니다. 그러나이 코드가 책에서 나왔기 때문에 코드와 관련이없는 느낌이 들었습니다.

import java.io.*;
import java.net.*;

public class AskTime {

    public static void main(String a[]) throws Exception {
        if(a.length != 1) {
            System.out.println("your lame");
            System.exit(0);
        }

        String machine = a[0];
        final int daytimeport = 13;
        Socket so = new Socket(machine,daytimeport);
        BufferedReader br = new BufferedReader(new InputStreamReader(so.getInputStream() ) );
        String time = br.readLine();
        System.out.printf("%s says it is %s %n", machine, time);
    }
}

내가 실행하는 데 사용하는 명령은 다음과 같습니다.

java AskTime us.pool.ntp.org

업데이트: MSAEED의 조언을 읽은 후 포트를 123으로 변경했으며 이제 연결 시간이 지정된 대신 연결 거부를 듣고 있습니다. 그래서 Msaeed가 옳다고 생각합니다. 누군가가 시간을 받기 위해 의사 소통해야 할 다른 무엇을 알고 있습니까?

도움이 되었습니까?

해결책

따라서이 코드는 구식을 사용합니다 DAYTIME 규약 포트 13을 사용합니다. NTP 규약 포트 123을 사용하고 조금 더 통신해야합니다. 많은 NTP 서버는 지원을 중단했습니다 DAYTIME 쿼리.

NTP 프로젝트는 An에 대한 샘플 코드를 제공합니다 NTP Java의 고객 여기.

다른 팁

MSAEED 옳다. 'time.nist.gov'와 같은 Daytime Server와 함께 코드를 사용할 수 있습니다. 이 목록

업데이트 최종 목표가 NTP 서버와 통신하는 것이라면 (처음에 말한대로 소켓을 사용하지 않고) Commons Net. 실제로, 당신은 그 어느 쪽이든 그 소스를보아야합니다 - 커먼즈 네트워크는 상당히 몇 개의 네트워크 프로토콜을 구현합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top