Autor Beitrag
RBiniasch
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 28.10.10 11:36 
Hallo,

ich bin auf ein seltsames Problem bei einem Kunden gestossen, welcher einen Rechner mit Win2008 Server laufen hat.

Auf diesem Server laufen eine Reihe von Diensten, welche untereinander per TCP/IP (Indy 10) kommunizieren. Der normale Ablauf ist wie folgt. Der TCP/IP-Server schickt dem sich anmeldenden Client beim Connect eine Begrüßungsnachricht. Der Client antwortet darauf mit seinen Anmeldedaten und danach kann der Datenaustausch beginnen. Das funktioniert soweit wunderbar.

Nur auf dem 2008er bleibt die Kommunikation beim zweiten Client kurz nach dem Connect stecken.
Der erste Client meldet sich wie gewohnt an. Das geht ohne Probleme. Wenn der zweite Client versucht sich zu verbinden, empfängt er noch die Begrüßungsnachricht der Servers. Seine Anmeldenachricht kommt allerdings nicht an. Ich sehe im Debugger, dass er sie ohne Fehlermeldungen verschickt. An der Stelle bleibt der Client auch nicht stehen. Nur beim Server rührt sich nichts. Das OnExecute-Ereignis wird nicht ausgelößt.
Sobald sich der erste Client wieder abmeldet kommt die vermisste Nachricht dann doch noch an, und der zweite Client kann normal weiter arbeiten. Das ist aber nicht Sinn der Sache ...

Per netstat kann ich sehen, dass die Connection aufgebaut ist und die Nachricht vom Server zum Client geht ja auch problemlos raus. Nur die Antwort bleibt irgendwo in Warteposition.

Das ist bestimmt irgendeine Einstellung im 2008er Server, aber zu dem Thema habe ich hier im Forum nichts gefunden und googeln hat auch nichts gebracht. Was dann wohl heißt, entweder bin ich der einzige, welcher das Problem hat oder die Lösung ist absolut trivial ... :)

Wenn irgendwem irgendwas dazu einfällt, jeder Hinweis ist willkommen.

Danke schonmal im voraus,
Ralf


Edit : Keine Ideen? Schade.
Nach weiteren Tests habe ich jetzt den vagen Verdacht, dass das Multithreading im TIdTCPServer nicht funktioniert. Sowohl 'Execute' wie auch 'Disconnect' des nachfolgenden Verbindungsthreads melden sich erst wenn die vorhergehende Verbindung getrennt wird.
Ich schaue mal was passiert, wenn ich mit den Delphi-TCP-Komponenten arbeite.