TCP + writeLine = Problem :(
Übersicht

AvaGastBetreff: TCP + writeLine = Problem :( |
![]() Antworten mit Zitat |
|
---|---|---|
Huhu,
(in der Hoffnung auf etwas mehr Aufmerksamkeit, poste ich meine Frage nochmal in einem eigenen Thread). Ich bin im Bereich Netzwerkcode noch nicht sehr erfahren (erlich gesagt, sind es gerade meine ersten Gehversuche). Nun habe ich ein grosses kleines Problem: gibt es eine Möglichkeit zu prüfen, ob ein TCP-Stream noch zum Senden bereit ist? - wenn ich einen Benutzer in meinem Programm "verliere", dann bricht dort das gesamte Netzwerk in sich zusammen, weil das Aufrufen von "WriteLine" an einen TCPStream, mit dem niemand mehr verbunden ist, zu einem RuntimeError führt. ![]() Ich wäre einem guten Rat sehr dankbar... ![]() + Ava + |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, du kannst mit Eof prüfen, ob der Stream noch verbunden ist, allerdings fällt mir auch nichts wirkliches ein, um das ganz sicher zu machen.
Zeig mal den Code, denn eigentlich dürfte da kein Error kommen. |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Unhandled Exception: Error writing to stream
Das ist die genaue Fehlermeldung und sie kommt direkt aus der WriteLine Anweisung (ganz genau gesagt von WriteByte in WriteString, das von WriteLine aufgerufen wird). Das passiert in dem Moment, wenn ich einen Client ohne Logout beende. Hm, vielleicht sollte ich erwähnen, dass ich BMax benutze. Vielleicht gibt es diesen Fehler in den anderen Blitz-Versionen gar nicht ?! ![]() [/Edit] Wenn ich vor dem Senden die Verbindung mit EOF(stream) austeste, dann läuft gar nix mehr, dann friert alles ein. Also kann's das irgendwie nicht sein. Und den Code hier zu posten, dürfte wenig sinnvoll sein... ![]() [/Edit] Zitat: For communication type streams such as socket streams, Eof returns True if the stream has been shut down for some reason - either locally or by the remote host. In this case, no more bytes can be read from or written to the stream.
Das klingt ja eigentlich so, als wäre das doch richtig. Aber ich bekomme da nur eine sehr starke Verzögerung (das Programm pausiert einige Sekunden) und dann liefert mir das EOF(stream) immer ein true zurück, auch dann, wenn die Verbindung eigentlich noch steht. ![]() [/Edit] Hah, ich habe es hinbekommen!! ![]() ![]() |
||
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
kein wunder das dein programm abstürzt wenn du die ausnahmen nicht behandlest die auftreten können -> siehe exceptions in der hilfe
(ausnahmenbehandlung) in deinem fall sähe das wohl etwa so aus: Code: [AUSKLAPPEN] Try writeline(...) catch e:TStreamWriteExeption print "ausnahme ist aufgetreten weil: " print e.ToString Rem weitere behandlungen wie verbindung neu aufbauen usw. end rem End Try zudem sollten generell alle exceptions behandelt werden die sinnvoll erscheinen. mfg stfighter |
||
Denken hilft! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group