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?
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?