Hi ihr, ich möchte als Zusatz für ein bestehendes Programm von mir, einen kleinen Onlinezeiten-Zähler einbauen. Dazu muss ich irgendwie überprüfen, ob der Nutzer online ist oder nicht. Wie kann man das machen?
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================
Moin!
Ich denke, Du könntest höchstens feststellen, ob eine Dfü-Verbindung besteht... (dafür gibts eine DLL).
Wenn Du in einem Netzwerk bist, hast Du keine Möglichkeit festzustellen, ob Du online bist. Du könntest dann höchstens versuchen, eine TCP-Verbindung zu einem Rechner im Internet herzustellen. Aber wenn der mal ausfällt? Wenn dazwischen eine Firewall ist?
Ist nicht trivial das Problem!
Gruß
Jürgen
ping google an (geht auch durch FWs) 😉
gruß,
r00t
posted by the real prince of persia
Wenn die Firewall Pings druchlässt ja....
Gruß
Jürgen
ähm warum sollte sie PING nicht durchlassen?
wir reden hier von pings nicht von tracert...
posted by the real prince of persia
Und wenn sie des nicht durchlässt, httpwebrequest auf google.de. Glaube da gibts sogar sowas wie IsConnected oder sowas in dem Typ, oder war das Java?
Verdammich, seit nebenbei noch was mit Java machen muss, bin ich irgentwie verwirrt....
--
mfg
Franknstein
Besuchen sie das VisualC++ - Forum
Ein Ping nicht durchzulassen, kommt wohl noch daher, dass damit einst DoS-Attacken möglich waren... und traceroute beruht auf einzelne Pings mit unterschiedlichen TTL-Wert.
Abgesehen davon ist es möglich, ein Ping mit einer Firewall zu blocken. Das alleine reicht aus, um es im Programm zu berücksichtigen.
Aber ich habe bis jetzt habe ich auch noch keinen Ausfall von google bemerkt. Von daher sollte eine TCP-Verbindung auf Port 80 von google ausreichend sein, um zu prüfen, ob man online ist.
Wie sieht es eigentlich aus, wenn man hinter einem http und/oder ftp-Proxy steckt? Ist man dann auch online? 😉
Gruß
Jürgen
Hi, super danke für die vielen Antworten!
Mein Problem ist damit dicke gelöst, denn es ging noch nichtmal um einen Rechner im Netzwerk, sondern nur um einen einzelnen.
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================
So hab nochmal folgende Frage jetzt:
erstelle jetzt einen HttpWebRequest (einfach nur so zum testen, ob das Internet erreichbar ist) und er hängt sich beim ca. dritten mal auf.
Ich lasse ihn folgendes tun:
try
{
HttpWebRequest httpWebReq =(HttpWebRequest)WebRequest.Create("http://www.google.de/");
httpWebReq.GetResponse();
setOnlineStat(); //eigene Methode (unwichtig!!)
}//try
catch(Exception ex)
{
setOfflineStat();
}//catch
Warum macht er das?
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================
kriegst du eine fehlermeldung? wenn ja welche?
untersuche doch den response. und oder den responsestream.
gruß,
r00t
posted by the real prince of persia
Hängt sich auf??? Tut also nix mehr???
Haste denn auch schon kleine Debug-Meldungen eingebaut, damit Du sicher sein kannst, dass er wirklich beim HttpWebRequest oder beim GetResponse hängenbleibt?
Gruß
Jürgen
Das ist es ja, er geht garnicht in den catch-Teil. Ja er bleibt wirklich dort hängen, du kannst es ja kurz bei die kompilieren, ist total komisch. Wie könnte ich das sonst machen?
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================
eigentlich kann man nicht viel falsch machen...
die explizite Typumwandlung ist das einzige was ungewöhnlich ist, hast du das aus einem beispiel? wenn ja woher?
probiere es mal damit
WebRequest request = HttpWebRequest.Create("http://www.google.de/");
WebResponse response = request.GetResponse();
System.IO.Stream instream = response.GetResponseStream();
gruß,
r00t
posted by the real prince of persia
Läuft bei mir unter Linux/Mono einwandfrei.... Sowohl der Online, als auch der Offline-Fall....
?(
Hängt!!
Immer wieder die glewiche Scheiße!!
Aber du benutzt Mono unter Linux? Das ist prima, das hatte ich nämlich auch vor, aber hab es nicht hinbekommen das Monopaket zu installieren. Könntest mir da etwas helfen?
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================
kommentiere mal deine 2 meth aus. und probiere es nochmal.
oder du hast sicher eine endlosschleife durch klasseninstanzierung gebaut:
class KlasseA:
KlasseB b = new KlasseB(); //global
class KlasseB:
KlasseA a = new KlasseA(); //global
keine fehlermeldung? lass deinen rechner mal paar minuten laufen...
was verstehst du unter aufhängen?
wenns dann nicht klappt, dann kauf dir einen nicht-hängenden-pc 😁
gruß,
r00t
posted by the real prince of persia
Na es reagiert auf garnichts mehr, lässt sich nicht bewegen .... hängt eben.
Wie hast du Mono installiert? Als *.tar Paket?
Als ich es per YAST installieren wollte, dann hatte ich folgendes Problem:
Er hat YAST geöffnet und gab eine Meldung raus das sich der Festplattenplatz dem Ende nähert, das stimmt auch, betrifft aber die Windowsplatte, nicht die, auf der Linux läuft!!
Dann klicke ich auf OK und YAST bleibt (zumindest für mein Gefühl) ziemlich leer und ich weiß nicht was ich dort dann tun soll.
==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================
Original von Maddinel
Wie hast du Mono installiert? Als *.tar Paket?
Nein, mit Red Carpet... Hab Dir 'ne PM geschrieben, weil es hier OT ist.
Gruß
Jürgen
Auch bei mir Hängt er beim Dritten versuch ... ich muss den Debugger abbrechen damit ich die Applikation Schließen kann.
Es ist Schier unmöglich noch irgendetwas zu machen, auch Warten hat keinen sinn, es tut sich nichts.
Die CPU bleibt aber Ruhig was heißt er Rechnet nichts.
Das Programm Stribt, und Hinterlässt im Grunde eine Leiche mit der Nichts anzufangen ist. 🤔 8o 🙁
Kostenlose Backlinks und Linktausch auf linkSpring
So, auch mal ne unqualifizierte Antwort:
von MSDN
Die GetResponse-Methode gibt eine WebResponse-Instanz mit der Antwort von der Internetressource zurück. Die zurückgegebene tatsächliche Instanz ist eine Instanz von HttpWebResponse, die für den Zugriff auf HTTP-spezifische Eigenschaften in diese Klasse umgewandelt werden kann.Bei Verwendung der POST-Methode müssen Sie den Anforderungsstream abrufen, die zu sendenden Daten schreiben und den Stream schließen. Diese Methode ist beim Warten auf das Senden des Inhalts blockiert. Wenn kein Wert für die Zeitüberschreitung festgelegt ist und Sie keinen Inhalt bereitstelllen, ist die Anwendung unbegrenzt blockiert.
Ab und zu reinschauen hilft 😄. Warum der aber grad beim 3. mal hängt? Vielleicht ist der Empfangspuffer voll?
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
_Original von él toro_Ab und zu reinschauen hilft 😄. Warum der aber grad beim 3. mal hängt? Vielleicht ist der Empfangspuffer voll?
Ich schau da Oft genug rein, nur wenn man nicht weis wonach man suchen soll, ist der weg zum Ziel Praktisch unmöglich 🙄
Kostenlose Backlinks und Linktausch auf linkSpring
Für das Überprüfen ob der User online ist oder nicht schau mal hier vorbei
http://groups.google.de/groups?hl=de&lr=&q=Internet+Verbindung+&btnG=Suche&meta=group%3Dmicrosoft.public.de.german.entwickler.dotnet.csharp