NTP 서버에 연결하면 실패가 계속됩니다 (Java)
-
22-07-2019 - |
문제
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. 실제로, 당신은 그 어느 쪽이든 그 소스를보아야합니다 - 커먼즈 네트워크는 상당히 몇 개의 네트워크 프로토콜을 구현합니다.
제휴하지 않습니다 StackOverflow