الاتصال إلى ملقم NTP يبقي الفشل (جافا)
-
22-07-2019 - |
سؤال
أنا فقط تعلم كيفية القيام الشبكات في جافا و أول مثال بسيط من الحصول على الوقت من ملقم 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 المشروع يوفر نموذج التعليمات البرمجية ل NTP
العميل في جافا هنا.
نصائح أخرى
msaeed هو صحيح.يمكنك استخدام التعليمات البرمجية الخاصة بك مع النهار الخادم مثل 'time.nist.gov' - أو اختيار أي من هذه القائمة
التحديث إذا كان هدفك النهائي هو التواصل مع ملقم NTP (بدلا من اللعب مع مآخذ كما قلت في البداية) يجب أن ننظر في المشاع صافي.في الواقع, يجب أن ننظر في المصدر وفي كلتا الحالتين - المشاع صافي بتنفيذ عدد غير قليل من بروتوكولات شبكة الاتصال.