C# Timer mit Internetuhr synchronizieren

xparet0209

Ensign
Registriert
Okt. 2007
Beiträge
180
hi
ich habe vor ein programm zu schrieben, bei dem es unteranderem eine aufgabe sein soll
einen timer mit dieser server zeit zu synchronisieren pool.ntp.org
und zwar nach dem ein button gedrückt wurde
also z.b.
man gibt in ein feld die gewünschte uhrzeit an: 08.00.00:000
also h.m.sec:msec
die millisekunden sind nicht unbedingt notwednig wäre aber schön

dann holt sich das programm die serverzeit und gibt aus wie viel zeit noch bis dahin ist

ich habe leider keine idee wie man an die sache rangeht
außerdem habe ich noch eine frage

wie rechnet man mit uhrzeiten ohne immer umzurechnen ?
also statt dem dezimalsystem ein system mit 60 einheiten benutzen
und bei dem millisec wieder dezimalsystem
es wäre sehr nett wenn ihr mir helfen könntet

mfg xparet0209
 
http://www.codeproject.com/KB/IP/Network_Time_Server.aspx
das versteh ich nicht
wie wende ich es jetzt auf pool.ntp.org an?
könnte ich auch den ping zum server ermitteln

das mit den zeiten - da werde ich mich wohl durch TimeSpan und DateTime arbeiten müssen
aber danke für die tipps :)

nja aber das probelm mit der snychronisation hab ich noch nicht so ganz

edit:
kann man folgendes mit timespan verkürzen?
ich hab nämlich nichts gefunden

double laufzeit= 69.570108523704349;
int hh;
int mm;
int ss;
hh = (int)Math.Truncate(laufzeit / 60);
mm = (int)Math.Truncate((laufzeit / 60 - hh)*60);
ss = (int)Math.Round(((laufzeit / 60 - hh)* 60-mm)*60,0);

laufzeitZ.Text = hh + ":" + mm + ":" + ss;

also imprinzip gibt die variable laufzeit die zeit in minuten an
und nun soll es in stunden minuten und sekunden umgewandelt werden

also laufzeitZ.Text = 1:9:34

wenn man jetzt eine timspan initialisiert mit 69.570108523704349 minuten


TimeSpan Laufzeit = new TimeSpan(0, 0, 69.570108523704349, 0, 0);

dann steht da das TimeSpan nur int parameter aktzeptiert...
 
Zuletzt bearbeitet:
Ach dein Timeserver benutzt das NTP Protokoll, dann bringt dir der Artikel auf Codeproject nix.

Aber kopier doch einfach diese Klasse in dein Projekt: klick

Verwendet wird das ganze dann so:

PHP:
SNTPClient client = new SNTPClient("pool.ntp.org");

try
{
   client.Connect(false);

   DateTime dt = client.ReceiveTimestamp;

   Console.Write(dt.ToString("HH:mm:ss"));
}
catch (Exception ex)
{
   Console.WriteLine(ex.Message);
}



kann man folgendes mit timespan verkürzen?
ja.

PHP:
double laufzeit = 69.570108523704349;
int milliseconds = (int)Math.Round(laufzeit*60*100);
TimeSpan ts = new TimeSpan(0, 0, 0, 0, milliseconds);

Console.Write("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds);
 
danke für das kürzen
übrigens 1 millisec ist 1/1000 sekunde ;)
nja hab das noch mal angepasst das er schon bei einer sekunde rundet
bin einfach nicht auf die idee gekommen die kleinste einheit zu nehmen :stock:
also das probelm mit der zeit ist gelöst es klappt alles hervorragend :)
dankeschön


aberkann ich auch ping verwenden?
 
Zuletzt bearbeitet:
ja aber das hab ich mittlerweile selbst rausgefunden
gidf halt xDD
daher

-closed-
 
Zurück
Oben