hässliche 10-Sekunden-Verzögerung

Status
Nicht offen für weitere Antworten.

fischefr

Aktives Mitglied
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?
 
G

Gast2

Gast
Moin,

ein Close() auf dem zweiten Socket erzwingen?

hand, mogel
 

fischefr

Aktives Mitglied
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.
 
Status
Nicht offen für weitere Antworten.

Oben