سؤال

أنا فقط تعلم كيفية القيام الشبكات في جافا و أول مثال بسيط من الحصول على الوقت من ملقم 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 (بدلا من اللعب مع مآخذ كما قلت في البداية) يجب أن ننظر في المشاع صافي.في الواقع, يجب أن ننظر في المصدر وفي كلتا الحالتين - المشاع صافي بتنفيذ عدد غير قليل من بروتوكولات شبكة الاتصال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top