Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Socket Fehler 10051. Aber nur beim "brutalen" schließen. (https://www.delphipraxis.net/120831-socket-fehler-10051-aber-nur-beim-brutalen-schliessen.html)

Thomas83 17. Sep 2008 12:43


Socket Fehler 10051. Aber nur beim "brutalen" schl
 
hi zusammen,

habe hier im Forum schon mal nach diesem Fehler gesucht und habe da auch einiges gefunden.
Nur leider werde ich daraus nicht schlau und komme nicht mehr weiter :( .

Mein Client / Server Anwendung funktioniert wunderbar.
Der Client befindet sich in einem Thread.
Zum Test sendet der Client und der Server alle 100ms einen string.

Wenn der Client Offline geht, über schließen, alles wunderbar.
Ziehe ich aber das Netzwerkkabel kommt (eher selten) beim Server diese Meldung
Zitat:

Windows Socket Fehler: Eine bestehende Verbindung wurde softwaregesteuert duch den Hostcomputer abgebrochen (10053), auf API 'recv'
und beim Client diese Meldung
Zitat:

Asynchroner Socketfehler #10053
Wenn ich den Server beende bzw. einfach schließe kommt diese Meldung auch.

Wie kann ich diese unterbinden bzw. abfangen? Errorcode = 0 bringt nichts.
Der Client soll immer die Verbindung versuchen zu halten bzw. aufbauen egal wie der Server beendet wurde. Wenn ihr Sourcen braucht sagt welche eventuell helfen.....

thx

Thomas83 17. Sep 2008 13:01

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
habe noch was vergessen. Wenn ich den Client und den Server auf einem Computer laufen lasse, kein Thema ohne Probleme. Egal wie ich den Server schließe bekomme keine Fehlermeldung.

Thomas83 22. Sep 2008 12:17

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
kann mir keiner helfen bzw. was zu der Meldung sagen.....

jokerfacehro 22. Sep 2008 12:22

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
Edit: folgendes hilft, wenn der client falsch beendet wird: thomas, das passiert, weil die verbindung nicht geschlossen wird. wenn du den prozess deines clients über den taskmanager schließt passiert das gleiche.

das beste was da abhilfe schafft, ist ein ping. alle 10sek. oder so schickst du allen clients ein ping und wenn die clients den ping erhalten, schicken sie ein pong zurück. bevor du dann den nächsten ping wegschickst, checkst du ob alle clients ein pong gesendet haben, wenn einer dabei ist, der kein pong gesendet hat, schließt du seinen socket und löscht ihn aus der liste, sowas nennt sich auch Timeout


habs grad ma mit meinem chatproggi getestet, wenn ich den chatserverprozess beende, bekomme ich den gleichen fehler, da wird man nich viel machen können außer halt, wenn der fehler kommt, die verbindung schließen und wieder neuaufbauen

Thomas83 22. Sep 2008 12:27

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
danke für die schnelle Antwort.
Wenn ich eine paket versende wird ein Ping gesendet erst bei Antwort wird ein Pong gesendet dann erst das eigentliche Paket.

Nur wird der Client beendet bzw. der Server wird beendet, weis das die Gegenstelle nicht und bringt diesen fehler :(

jokerfacehro 22. Sep 2008 12:29

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
wird der client falsch beendet, kriegt das der server über den nicht erhaltenden pong mit und kann so vorbeugend die verbindung zu diesem client schließen bevor ein socketfehler auftritt, andersrum wirds schwieriger, ich check ma ebend

jokerfacehro 22. Sep 2008 12:33

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
sooo hab grad ma netzwerkkabel gezogen. der server bekommt die 10053 meldung und kicked daraufhin den benutzer aus der userliste (weil kein pong zurückkomt), der server hat also kein problem damit.

der client bekommt auch nen 10053 fehler und kann dann darauf reagieren, indem er z.B. nach 30sek neu verbindet (also nachdem der timeout des servers abgelaufen ist)

Thomas83 22. Sep 2008 13:30

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
Versuche in onerror den 10053 abzufangen. Egal was ich da schreibe, die Meldung kommt dennoch.

jokerfacehro 22. Sep 2008 13:49

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
Edit: ups überlesen

einfach
Delphi-Quellcode:
ErrorCode:=0;
fertig :)

Thomas83 22. Sep 2008 13:51

Re: Socket Fehler 10051. Aber nur beim "brutalen"
 
genau da schreibe ich ErrorCode :=0 dennoch kommt der Fehler..... hmmmmmm


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.
Seite 1 von 2  1 2      

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