AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Prüfen ob ein Socket verbunden ist?
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob ein Socket verbunden ist?

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Mär 2006 · letzter Beitrag vom 19. Mär 2006
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Prüfen ob ein Socket verbunden ist?

  Alt 19. Mär 2006, 19:40
Moin,

also es geht erstmal um folgendes: Ich möchte einen Bot schreiben, der wenn er vom Server getrennt wird, immer wieder versucht neu zu verbinden - unendlich, bis es eben klappt. In meiner endlosen while Schleife muss ich ja irgendwie prüfen, ob der Socket bereits verbunden ist oder nicht, Microsoft meinte dazu:

Zitat:
Weil die Connected-Eigenschaft nur den Zustand der Verbindung während des letzten Vorgangs wiedergibt, sollten Sie versuchen, eine Meldung zu senden oder zu empfangen, um den aktuellen Zustand zu bestimmen. Nachdem das Senden der Meldung fehlgeschlagen ist, gibt diese Eigenschaft nicht mehr true zurück.
Beachten Sie, dass dieses Verhalten vorgesehen ist. Sie können den Zustand der Verbindung nicht zuverlässig überprüfen, da die Verbindung in der Zeit zwischen der Überprüfung und dem Senden/Empfangen getrennt werden kann. Der Code sollte von einer vorhandenen Verbindung des Sockets ausgehen und fehlgeschlagene Übertragungen ordnungsgemäß behandeln.
Ich habe es nun so versucht:

Code:
byte[] jo = new byte[0];
tcpClient.Client.Receive(jo);
if (!tcpClient.Connected)
{
    tcpClient.Connect("irc.ham.de.euirc.net", 6667);
}
Wenn der Server mich(den Bot) nun disconnectet, connectet er nicht neu, weil "Connected" immer true ist irgendwie...

Hat jemand ne Idee? Ist mein Code falsch?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Prüfen ob ein Socket verbunden ist?

  Alt 19. Mär 2006, 20:26
Hallo Mario,

wäre es nicht geschickter anstatt Receive() ab und zu ein IRC PING an den Server zu schicken um den Verbindungszustand zu überprüfen? Zumindest interpretiere ich den Microsoft-Text so.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Prüfen ob ein Socket verbunden ist?

  Alt 19. Mär 2006, 20:38
Moin marabu,

das würde zu lange dauern, ich muss sofort wissen, wann der Server die Verbindung getrennt hat, deswegen benutz ich immer "Receive" und lese 0 Bytes.... Nach Microsoft sollte nach Aufruf einer solchen Methode, "Connected" den "wahren" Wert haben... hat es aber nicht , da immernoch "True" nachdem die Verbindung vom Server beenden worden ist.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Prüfen ob ein Socket verbunden ist?

  Alt 19. Mär 2006, 21:08
Ich vermute, dass zum Empfangen von 0 Bytes der Server nicht kontaktiert wird - beim Senden eines PING aber schon.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Prüfen ob ein Socket verbunden ist?

  Alt 19. Mär 2006, 21:41
Moin marabu,

würde ich aber in einer whileschleife was an den server senden, würde ich ihn ja regelrecht zuflooden. hmpfff
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Prüfen ob ein Socket verbunden ist?

  Alt 19. Mär 2006, 22:47
Zitat von marabu:
ab und zu ein IRC PING
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz