الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الوقت الحقيق

مغلق
بدأه المبرمج2003 في 22 مارس 2004 · 3 رد · 2,623 مشاهدة · في قسم أرشيف الوقت والتاريخ
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته وبعد :-

لقد قمت بوضع برنامج للحظور والانصراف وبه حقل يسجل الوقت الحقيقي للجهاز

()Now=

لكن البرنامج على الشبكة يعني كل واحد اذا عدل في تاريخ جهازه الخاص يقدر يسوي الوقت زي ما هو عايز

كيف اسوي علشان اخليه ياخذ وقت السيرفر او وقت جهازي انا ؟؟؟؟؟؟؟؟؟؟؟؟

وتراني دورت في كل مكان وما وجد الاجابة يعني لا احد يقول موجوده في الارشيف ولا في مكان ثاني اللي يعرف يقول حتى لو اسم الموضوع وانا ابحث

وشكرا

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#2

لقد بحثت لك ولكني لم أجد إلا مثال بلغة السي

عموما يمكنك طرح السؤال بقسم السي فهناك ربما استطاع الشباب بتحويله الى ما تريد

المثال

====

Time Protocol Client
/////////////////////////////////////////////////////////////////////////////
//
// timeclnt.cpp
// programmer: David Sills
//
// a time service client program making use of Dr. Paul Buis's Sock++ code 
//     (C++ wrappers around networking C function calls, designed to appear
//     like the Java networking library) and some Windows functions to check
//     server time and reset client system time if needed
//
//
/////////////////////////////////////////////////////////////////////////////

#include <math.h>
#include <time.h>
#include <windows.h>
#include "socket.h"
#include "namesystem.h"
#include "date.h"

const int WINEPOCH = 2208988800;    // Windows epoch, in UCT secs
const double TOLERANCE = 1.0;       // seconds local time is allowed to be off

Socket MakeSocket(InetAddress ia, string portName, string protoName)
    THROW(InetException);
time_t GetServerTime(Socket& listenSock);
bool SetLocalTime(Date& dt);


int main(int argc, char* argv[])
{
    string host;
    string port;

    if (argc < 2)
        host = "clock.psu.edu";
    else
        host = argv[1];

    if (argc >= 3)
        port = argv[2];
    else
        port = "time";

    InetAddressVector iav;
    try {
        iav = theNameSystem.getAllByName(host);
    }
    catch (UnknownHostException uhe) {
        cerr << uhe << endl;
    }

    Socket s;
    bool success = false;

    for (unsigned i = 0; i < iav.size(); i++)
    {    
        try {
            s = MakeSocket(iav, port, "udp");

            s.connect();
            success = true;
            break;
        }
        catch (InetException ie) {
            // do nothing, so loop tries next address
        }
    }

    // s has been connected!
    if (success)
    {
        // try to get time through s
        if (time_t t_server = GetServerTime(s))
        {
            // initialize server and local Date objects
            Date d_server(t_server);
            Date d_client;

            // if they differ appreciably, set client time to server time
            if (fabs(d_client - d_server) > TOLERANCE)
                if (SetLocalTime(d_server))
                    cout << "Client system time reset to server time" << endl;
                else
                    cout << "Failed to reset client system time" << endl;
            else
                cout << "Client system time matches server time" << endl;
        }
        else
            cerr << "Unable to obtain server time" << endl;
    }
    else
        cerr << "Failed to connect to specified server" << endl;

    return 0;
}

// MakeSocket
Socket MakeSocket(InetAddress ia, string portName, string protoName)
    THROW(InetException)
{
    PortNumber pn(portName, protoName);
    EndPoint ep(ia, pn);
    return Socket(ep);
}

// GetServerTime
time_t GetServerTime(Socket& s)
{
    time_t t;

    try {
        if (s.read((void*) &t, sizeof(t)) != sizeof(time_t))
            cerr << "Error reading time value\n";
        return ntohl((u_long) t) - WINEPOCH;
    }
    catch (InetException ie) {
        cerr << "Caught exception in GetServerTime()" << endl << ie << endl;
        return 0;
    }
}

// SetLocalTime
bool SetLocalTime(Date& dt)
{
    SYSTEMTIME st;

    // set struct members
    st.wYear = dt.getUTCFullYear();
    st.wMonth = dt.getUTCMonth() + 1;
    st.wDayOfWeek = dt.getUTCDay();   // ignored
    st.wDay = dt.getUTCDate();
    st.wHour = dt.getUTCHours();
    st.wMinute = dt.getUTCMinutes();
    st.wSecond = dt.getUTCSeconds();
    st.wMilliseconds = dt.getUTCMilliSeconds();

    // reset system time
    if (SetSystemTime(&st))
        return true;

    return false;    // hopefully never reached

تحياتي

منقول من الرابط

http://www.cs.bsu.edu/homepages/dlsills/Da...imeclient.shtml

تم تعديل هذه المشاركة بواسطة فيصل الحربي في 22 مارس 2004 في 17:20

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#3

شكرا اخي الحربي ولكن هل انسخ هذا الكود ولا اعدل فيه واحط اسم الجهاز الخاص بي ولا وش اسوي وعلى فكرة !!!!!!!

هل اقدر استخد كود السي في الاكسس ؟؟؟

وهل اقدر اسوي طريقة بحيث اقدر اني امنع التلاعب بالوقت يعني مو شرط باكواد مثلا باستخدام برامج اخرى

وشكرا مرة اخرى يا اخ فيصل على تعاونك معي في هذه المشكلة اللتي لا اعتقد انها ستحل بهذه السهولة

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

#4

السلام عليكم جميعا ورحمة الله وبركاته

انا اشكر اخي الحربي على رده لكن يا اخوان معقول سؤالي ما احد يعرف يجاوب عليه

اللي اعرف ان هذا المنتدى لا يجد السائل فيه إلا الاجابة الصارمة ولكني لم اجد اجابة شافية لسؤالي فهل من مجيب وشكرا

ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات

ابو حسن

هذا الموضوع مغلق.

مواضيع مشابهة