Narses - Mo 17.03.08 17:54
Titel: Re: ClientSocket wiederverbinden?
Moin und :welcome: im Forum!
pantarhei hat folgendes geschrieben: |
ich habe das Problem dass ich es nicht schaffe einen ClientSocket unter Delphi 5 automaisch wiederzuverbinden, wenn die Verbindung vom Server beendet wurde. |
Grundsätzlich sollte das wohl möglich sein. ;)
pantarhei hat folgendes geschrieben: |
Sobald ich versuche Open aufzurufen, und die Verbindung in der gleichen Funktion zu benutzen funktioniert nichts. |
Das ist auch korrekt so, du bist erst dann wieder mit dem Server verbunden, wenn das Ereignis OnConnect eintritt - was aber eben erst nach Ende des aktuellen Ereignishandlers passieren kann, da die Nachricht aus der AppMessageLoop erst dann verarbeitet wird.
pantarhei hat folgendes geschrieben: |
Ich muss wirklich hingehen, über einen sep. Button nur die Verbindung herstellen um diese dann nutzen zu können. |
Was dann eben genau das ermöglicht, die aktuelle Methode wird beendet, die nächste Nachricht kann bearbeitet werden.
pantarhei hat folgendes geschrieben: |
Das sieht mir doch schwer nach einem Bug aus. |
Nein, das ist völlig korrekt. ;)
pantarhei hat folgendes geschrieben: |
Oder habe ich da jetzt ein Verständnissproblem bei dem Ganzen? |
Ja, ich fürchte schon. :? Du gehst eben nicht auf die Weise ereignisorientiert ran, wie man das unter Windows tun muss, wenn man non-blocking-Sockets verwenden möchte.
Alternativen, um das Problem zu lösen:
a) weiterhin non-blocking-socket-calls: einen Anwendungszustand definieren und entsprechend in den Ereignissen reagieren
b) umstellen auf blocking-socket-calls und mit Threads arbeiten.
Hier findest du in Kapitel 8.3 [
http://www.delphi-library.de/topic_BinaerProtokollTutorial+Sockets+v100+MalChatFiles_66706.html] eine Erläuterung der Problematik. :idea:
cu
Narses