Entwickler-Ecke
Internet / Netzwerk - Verständnisfrage: serversocket in seinem ondisconnect-er...
huuuuuh - Mi 30.07.08 17:47
Titel: Verständnisfrage: serversocket in seinem ondisconnect-er...
ich hab für ein netzwerkfähiges spiel einen chat programmiert. nun hab ich versucht, im ondisconnect-ereignis des serversockets ebendiesen zu schliessen. dabei kommt es zu einer fehlermeldung (10038) die sich weder durch irgendein onerror-ereignis abfangen lässt noch durch try-except. mit einem timer, der den serversocket ne halbe sekunde später schließt, gibts keine fehlermeldung. da ich diese methode nich wirklich "gut" finde, wollt ich fragen ob es noch eine andere möglichkeit gibt, und vor allem, warum es zu dem von mir beschriebenen fehler kommt.
MfG nils
Boldar - Mi 30.07.08 18:42
ich glaube, es war so, dass man komponenten nicht in ihren eigenen Methoden zerstören kann. Deshalb funkltioniert auch das mit dem Timer.
huuuuuh - Mi 30.07.08 19:25
aber serversocket.close zerstört die komponente doch nich?
GTA-Place - Mi 30.07.08 19:38
http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=EIdNotASocket.html
| Zitat: |
| EIdNotASocket is an EIdSocketError descendant that represents the exception raised when a socket operation is performed using an invalid socket handle. |
Und bevor du jetzt sagst "Ich nutz doch gar kein Indy": Der Fehler ist ja der selbe. Im OnDisconnect wird noch irgendwas mit dem Socket gemacht. Wenn du ihn aber schließt, kann nix mehr gemacht werden -> "Invalid Socket"
huuuuuh - Mi 30.07.08 19:46
warum invalid socket handle?
die gleiche vorgehensweise funktioniert beim clientsocket übrigens ohne probleme...
Narses - Mi 30.07.08 23:19
Moin!
huuuuuh hat folgendes geschrieben: |
| warum invalid socket handle? |
Weil beim OnDisconnect der Socket erst geschlossen werden soll, aber noch nicht ist.
huuuuuh hat folgendes geschrieben: |
| die gleiche vorgehensweise funktioniert beim clientsocket übrigens ohne probleme... |
Ein
TClientSocket ist ja auch kein
TServerSocket... :|
Lösung: schick dir selbst eine Fensternachricht, in deren Handler du den
TServerSocket schließt.
btw: wenn du ständig den ServerSocket schließt, dann stimmt da was mit dem Konzept deiner Anwendung nicht.
cu
Narses
huuuuuh - Mi 30.07.08 23:39
der serversocket wird nur dann geschlossen wenn die verbindung beendet wird, sprich am ende eines netzwerk-spiels. bei einem chat mag es vielleicht seltsam klingen den server bei jedem ondisconnect zu schliessen, aber ich finde, nach einem netzwerk-spiel macht es durchaus sinn...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!