Hi,
Mein Router spinnt leider sehr oft, und es kann vorkommen, dass man ihn alle 30 min. neu starten muss, da er die Verbindung zum Provider (WAN) verliert.
Das ging ja bis jetzt noch, ich stieg in solchen Fällen immer im Webinterface des Routers ein und startete ihn so oft neu, bis er sich wieder verbunden hatte.
Jetzt will ich einen einen Webserver und FTP Server auf einer alten Linux Schüssel mit Textoberfläche laufen lassen. Es kommt jetzt leider oft vor, dass man diesen Server von aussen nicht erreichen kann, da der Router die Verbindung zum Provider wieder mal verloren hat..
Ich habe mir gedacht ich schreibe mir einfach ein Programm (in C#) dass alle 10 min. etwa überprüft (per Webinterface, d.h. Socket Verbindung auf Port 80 oder HttpWebRequest), ob der Router mit dem WAN Port verbunden ist. Wenn nicht, dann einfach so oft den Router neu starten (er hat da so eine Funktion mit der er sich neu Startet). So weit, so klar. Natürlich will ich aber keine halben Sachen machen
, wenn ich schon mal sowas Programmiere, dann ein allgemeines Programm, das man leicht auf einen anderen Router Typ erweitern kann.
Das Problem ist, dass das Login und das Neu Verbinden und das schauen, ob man eine gültige IP Adresse vom WAN PC bekommen hat, bei jedem Router anders ist.
Ich habe mir gedacht ich schreibe mir einfach ein Interface "IRouter", das folgende Methoden enthalten muss:
public bool CanReachWan();
public void Restart();
public void Login(string username, string pwd);
Und wenn ich das Programm um einen Router erweitern will, schreibe ich mir eine neue DLL mit genau einer Klasse, die muss heissen MyRouter, die "IRouter" implementieren muss.
Beim Programmstart gibt man beispielsweise die .dll vom "Router Package" als Parameter mit, und das Programm bindet diese Dll zur Laufzeit ein und ruft die entsprechenden Methoden auf.
Meine Frage nun, ist das die Sinnvollste Lösung?
Ich kann mir nicht vorstellen, dass das professionelle Programme das so mit ihreren "Zusatz-Packages" lösen, weiss da jemand bescheid wie das am einfachsten zu und Sinnvollsten zu implementieren wäre?
Lg, Yanick
//EDIT: Sorry das mit der Überschrift, ich wollt es eigentlich nicht Teile nennen, vergessen zum löschen, und nun kann man das nicht mehr ändern...
Mein Router spinnt leider sehr oft, und es kann vorkommen, dass man ihn alle 30 min. neu starten muss, da er die Verbindung zum Provider (WAN) verliert.
Das ging ja bis jetzt noch, ich stieg in solchen Fällen immer im Webinterface des Routers ein und startete ihn so oft neu, bis er sich wieder verbunden hatte.
Jetzt will ich einen einen Webserver und FTP Server auf einer alten Linux Schüssel mit Textoberfläche laufen lassen. Es kommt jetzt leider oft vor, dass man diesen Server von aussen nicht erreichen kann, da der Router die Verbindung zum Provider wieder mal verloren hat..
Ich habe mir gedacht ich schreibe mir einfach ein Programm (in C#) dass alle 10 min. etwa überprüft (per Webinterface, d.h. Socket Verbindung auf Port 80 oder HttpWebRequest), ob der Router mit dem WAN Port verbunden ist. Wenn nicht, dann einfach so oft den Router neu starten (er hat da so eine Funktion mit der er sich neu Startet). So weit, so klar. Natürlich will ich aber keine halben Sachen machen

Das Problem ist, dass das Login und das Neu Verbinden und das schauen, ob man eine gültige IP Adresse vom WAN PC bekommen hat, bei jedem Router anders ist.
Ich habe mir gedacht ich schreibe mir einfach ein Interface "IRouter", das folgende Methoden enthalten muss:
public bool CanReachWan();
public void Restart();
public void Login(string username, string pwd);
Und wenn ich das Programm um einen Router erweitern will, schreibe ich mir eine neue DLL mit genau einer Klasse, die muss heissen MyRouter, die "IRouter" implementieren muss.
Beim Programmstart gibt man beispielsweise die .dll vom "Router Package" als Parameter mit, und das Programm bindet diese Dll zur Laufzeit ein und ruft die entsprechenden Methoden auf.
Meine Frage nun, ist das die Sinnvollste Lösung?
Ich kann mir nicht vorstellen, dass das professionelle Programme das so mit ihreren "Zusatz-Packages" lösen, weiss da jemand bescheid wie das am einfachsten zu und Sinnvollsten zu implementieren wäre?
Lg, Yanick
//EDIT: Sorry das mit der Überschrift, ich wollt es eigentlich nicht Teile nennen, vergessen zum löschen, und nun kann man das nicht mehr ändern...