# hässliche 10-Sekunden-Verzögerung



## fischefr (21. Dez 2008)

Hallo!

Ich möchte bzw. habe die Weiterleitung einer TCP-Verbindung realisiert. Hintergrund ist folgender Ablauf:
Ich will über Remote Desktop einen PC kontaktieren. Dieser weckt einen weiteren Rechner per Wake-on-Lan und leitet die TCP-Verbindung weiter.


Prinzipiell funktioniert alles aber:

Ein Thread (nennen wir in *1) pro Clientverbindung startet 2 Hilfsthreads, die jeweils die Daten von einem InputStream zu einem OutputStream des jeweils anderen Sockets schaufeln. Beende ich nun der RDP-Client, terminiert einer der beiden Hilfsthreads sofort. Der zweite Hilfsthread braucht aber noch 10 Sekunden, bis er terminiert.
Der erste Thread (*1) wartet per Join auf die beiden Hilfsthreads und räumt dann auf (Sockets schließen etc.)
Jetzt würde ich gerne die 10-Sekunden-Pause weg bekommen. Ein Versuch mit Thread.interrupt bewirkt gar nichts, ich hänge nach wie vor im 2. Hilfsthread an der Zeile "readBytes = inStream.read(buf);". Kann mir jemand einen Tipp geben?


----------



## Gast2 (22. Dez 2008)

Moin,

ein Close() auf dem zweiten Socket erzwingen?

hand, mogel


----------



## fischefr (23. Dez 2008)

Problem ist jetzt gelöst!
Ich musste einfach nur setSoLinger für die beiden sockets einschalten. Anscheinend gingen da immer ein paar Bytes der Kommunikation verloren.


----------

