Sockel liest und schreibt gleichzeitig [geschlossen]

9

Ich versuche, ein sehr einfaches Socket-Programm zu schreiben, was ich grundsätzlich möchte, ist, dass der Client in einer (echten) Schleife weiter auf die Kommunikation vom Server wartet. Jetzt möchte ich auch Client in der Lage sein, einige Daten zurück zu dem Server in der Mitte des Abhörens zu senden.

Die einzige Lösung, die ich mir vorstellen kann, ist das Erstellen eines Threads für das Lesen und Schreiben und das Unterbrechen des Lese-Threads bei jedem Schreiben.

gibt es eine bessere Lösung oder ist dies die einzige Möglichkeit, dies zu tun

    
yahh 09.10.2012, 20:19
quelle

3 Antworten

6

Sie können zwei Threads verwenden. Eine zum Lesen und eine zum Schreiben. Auf diese Weise kann der Schreib-Thread schreiben, wann immer es ihm gefällt (muss das Lesen nicht stoppen).

Eine andere Möglichkeit besteht darin, vor dem Aufruf von read setSoTimeout(timeoutMs) auf dem Socket zu verwenden. Dies führt dazu, dass es SocketTimeoutException ausgibt, wenn es länger dauert als timeoutMs Millisekunden zu lesen, so dass Sie dann schreiben können wie Sie möchten.

    
CrazyCasta 09.10.2012, 20:22
quelle
0

Sehen Sie sich die FTP-Protokollspezifikationen an. Es macht, was Sie beabsichtigen zu tun mit zwei Socket / Kanälen, einen für Befehle und einen für Daten.

    
ali köksal 09.10.2012 20:30
quelle
-1

Sie können zwei verschiedene Ports verwenden, einen zum Hören und einen zum Schreiben. und verwenden Sie verschiedene Threads, um die Operationen auszuführen, während Sie während der (echten) Schleife kein Problem erzeugen.

    
Rajesh Pantula 09.10.2012 20:30
quelle

Tags und Links