Teile

yan1

Erfahrenes Mitglied
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...
 
Hi Yanick!

Das ist meines Erachtens die einzig richtige und OOP-grechte Lösung.
Ich hätt es nicht anders gemacht. Ein Pluginframework kann nur so funktionieren...
 
Via eines Parameters würde ich dies nicht lösen. Ich denke, dass es besser ist, einen Default-Provider zu setzen und dieser kann dann via eines Options-Dialoges verändert werden (in diesem Dialog-Fenster werden dann auch gleich sämtliche verfügbaren Plugins angezeigt). Dadurch hat der User volle Kontrolle und muss sich nicht durch irgendwelche Parameter, XML-Dateien etc. hangeln.
 
Ja, nur ich will das ganze dann auf meinem Server (UNIX Textbasierend) laufen lassen. Deshalb erstelle ich a) eine Konsolenanwendung die mit (muss ich mir noch überlegen) den richtigen Parametern oder XML Datei aufgerufen wird, und die Arbeit erledigt. b) Ich mache dazu eine Benutzerfreundliche GUI in der ich alles mögliche auswählen kann, und mir das richtige Programm nur mehr mit dem Entsprechendem Parameter aufruft (bsp. die Logging Streams zB stdout sollen auch per Parameter angegeben werden können, im GUI kann man sie einfach mit Hilfe einer CheckBox auswählen).

So ist gewährleistet, dass man das Programm auch auf der Linux Bash aufrufen kann ;-)
Nur muss ich mir noch anschauen wie ich .NET 1.1 Programm (für Mono) mit VS 2005 compiliere....

Danke für die Antworten.. :)

//EDIT: Buchstabe fehlte... *g*
 
Dann mach es via XML Config File. Eine gute Beschreibung dazu und vielleicht irgendwann mal eine IDE.

Wie kompilierst du das? Entweder direkt unter Mono, oder aber, du entwickelst Mono-konform und kompilierst es via VS 2005 ganz normal und rufst es dann einfach unter Linux via

mono meintool.exe

auf. Fertig. Absolut keine Hexerei.
 
Ja, aber Mono hat ja noch .NET 1.1 oder?

Und wie kompiliere ich unter VS 05 so dass ich .NET 1.1 CIL Code erzeuge?
 
Einfach mal die Mono-Homepage genauer ansehen. Das sind bereits sehr viele Teile aus .NET 2 drinnen und ich würde dir den Hinweis nicht geben, hätte ich es nicht bereits ausprobiert ;-)
 
Jep, hab ich mir schon mal durchgelesen:

Mono Project Website hat gesagt.:
Mono 2.0 will mark the time when the class libraries have complete support for the new features in the 2.0 edition of the framework and will be the first time that the Code Access Security will be supported.
Notice that Mono 1.1.x already contains many of the 2.0 features and class libraries, there are just no guarantees that they are complete, you will have to compile and test your application with Mono (using the gmcs compiler instead of mcs).



Da steht nämlich dass sie nicht wirklich garantieren dass alles Komplett ist... Aber egal, ich werds mal ausproiberen, und wenns nicht geht werd ich alle Code Dateien aufs Linux übertragen und mir mal anschauen wie ich mit dem mono Compiler manuell compiliere *g* hab leider kein grafisches Linux :'(



Also mal fettes dankeschön an alle, werd dieses Thema mal erledigt markieren ;)



Lg, Yanick
 

Neue Beiträge

Zurück