Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Testen, ob online
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

Themenstarter:

Testen, ob online

beantworten | zitieren | melden

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!!!
==============================
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

ping google an (geht auch durch FWs)

gruß,

r00t

edit:
http://www.csharphelp.com/archives/archive6.html
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

Wenn die Firewall Pings druchlässt ja....

Gruß
Jürgen
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

ähm warum sollte sie PING nicht durchlassen?

wir reden hier von pings nicht von tracert...
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
Franknstein
myCSharp.de - Member



Dabei seit:
Beiträge: 531

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

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!!!
==============================
private Nachricht | Beiträge des Benutzers
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

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!!!
==============================
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

kriegst du eine fehlermeldung? wenn ja welche?

untersuche doch den response. und oder den responsestream.



gruß,

r00t
posted by the real prince of persia
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

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!!!
==============================
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

Läuft bei mir unter Linux/Mono einwandfrei.... Sowohl der Online, als auch der Offline-Fall....
?(
private Nachricht | Beiträge des Benutzers
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

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!!!
==============================
private Nachricht | Beiträge des Benutzers
r00t
myCSharp.de - Member



Dabei seit:
Beiträge: 141
Herkunft: Schwäbisch Gmünd

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Maddinel
myCSharp.de - Member

Avatar #avatar-3180.gif


Dabei seit:
Beiträge: 1378
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

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!!!
==============================
private Nachricht | Beiträge des Benutzers
Franknstein
myCSharp.de - Member



Dabei seit:
Beiträge: 531

beantworten | zitieren | melden

Hast du auf einen eventuellen Timeout gewartet?
Besuchen sie das VisualC++ - Forum
private Nachricht | Beiträge des Benutzers
GhoBu
myCSharp.de - Member



Dabei seit:
Beiträge: 36
Herkunft: Stade

beantworten | zitieren | melden

Zitat
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
private Nachricht | Beiträge des Benutzers
Andy.C
myCSharp.de - Member

Avatar #avatar-1875.gif


Dabei seit:
Beiträge: 249
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
él toro
myCSharp.de - Member

Avatar #avatar-1582.gif


Dabei seit:
Beiträge: 184
Herkunft: Dresden

beantworten | zitieren | melden

So, auch mal ne unqualifizierte Antwort:
Zitat
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 :D. 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
private Nachricht | Beiträge des Benutzers
Andy.C
myCSharp.de - Member

Avatar #avatar-1875.gif


Dabei seit:
Beiträge: 249
Herkunft: Berlin

beantworten | zitieren | melden

Zitat
Original von él toroAb und zu reinschauen hilft :D. 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
private Nachricht | Beiträge des Benutzers
guenni81
myCSharp.de - Member



Dabei seit:
Beiträge: 206

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers