Sockets Verständnisfrage: abwechelnd lesen-schreiben

Status
Nicht offen für weitere Antworten.
T

TheSunToucher

Gast
Hi,

irgendwie habe ich glaube ich irgendwas grundsätzliches mit Sockets nicht verstanden. Ich möchte mit einer fremden Applikation über Sockets kommunizieren. Meine und die fremde Applikation unterhalten sich über kleine XML-Telegramme. Sowohl die fremde, meine als auch mögliche weitere Applikationen verbinden sich zu einer art Hub, welcher alle ankommenden Nachrichten an alle anderen Verbundenen Applikationen verteilt.

Ich habe also eine kleine Testklasse geschrieben, welche einen Socket öffnet, sich zum Hub verbindet und ein Telegramm schickt. In der fremden Applikation kommt das Telegramm an, wird korrekt verarbeitet, und mir werden mehrere Antworttelegramme geschickt. Über einen Putty den ich zum Hub verbunden habe kann ich alle Telegramme sehen, sowohl die meiner als auch die antworten der fremden Applikation.

Soweit so gut. jetzt zum Problem: Ich schreibe auf den OutputStream des Sockets und warte anschließend auf Antwort, indem ich vom InputStream lese, doch da kommt nichts an und er wartet bis zum Timeout. (Zeile 9 Listing 2)

Hier mal zwei Codeausschnitte: Aufbau des Socket und senden und anschließendes lesen

Code:
        socket = new Socket(host, port);
        socket.setSoTimeout(timeout);
        in = new InputStreamReader(socket.getInputStream());
        out = new OutputStreamWriter(socket.getOutputStream());

Code:
        // message schicken
        out.write(message);
        out.flush();
        
        // antwort lesen
        StringBuffer response = new StringBuffer();
        char[] buffer = new char[1024];
        for(int read; (read = in.read(buffer)) >=0; ){
            response.append(buffer, 0, read);
        }

Meine eigentliche Frage ist, habe ich irgendwas grundsätzliches nicht verstanden? Kann ich auf dem geöffneten Socket nach belieben abwechselnd lesen und schreiben?

Danke gruß,
Tim
 

foobar

Top Contributor
Java-IO ist total nervig. Ich habe mich auch schon oft damit rumgeärgert. Jenachdem welche flush-Methode du benutzt handelt es sich um eine nop. Also flushen ist Glücksache :)

Kann ich auf dem geöffneten Socket nach belieben abwechselnd lesen und schreiben?
Das funktioniert. Http macht das genauso
 
T

TheSunToucher

Gast
Danke für die Antwort.
Ich glaube ich bin einen Schritt weiter, die fremde Applikation sendet nech der Nachricht kein \n und deshalb wartet sich meine read()-Methode tot. Kann ich nicht von einem Stream lesen ohne auf \n zu warten?
 

Mag1c

Top Contributor
Hi,

sicher kannst du das. Du mußt nur definiert das Ende der Nachricht erkennen können. Bei readLine liest er eben immer bis zu einem Zeilenende. Aber es gibt ja auch noch die normalen read-Methoden :wink:

Gruß
Mag1c
 

foobar

Top Contributor
sicher kannst du das. Du mußt nur definiert das Ende der Nachricht erkennen können. Bei readLine liest er eben immer bis zu einem Zeilenende.
Das war bei mir auch das problem, deshalb habe ich eine EndenachrichtPI(<?END?>) angehängt, dann klappt das viel besser.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jannn Socket Sockets an ein anderes Gerät weiterreichen? Netzwerkprogrammierung 8
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
D Socket Verwirrung bei Sockets Netzwerkprogrammierung 1
E Mehrere Sockets Netzwerkprogrammierung 2
N Fragen zu Sockets Client Netzwerkprogrammierung 3
A Sockets Serialisierung Netzwerkprogrammierung 1
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
H Sockets oder HTTP- Methoden? Netzwerkprogrammierung 3
T Socket Bidirektionale Verbindung mit Sockets Netzwerkprogrammierung 8
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
C Socket Datagram-Sockets mit integrierter Message Queue? Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
F Technologiewahl: Swing/RMI/Sockets Netzwerkprogrammierung 13
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
M Socket Sockets Grundlage Netzwerkprogrammierung 25
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
D Socket Raw Sockets mit java.net.*? Bsp ICMP Netzwerkprogrammierung 7
H Komprimierte Sockets Netzwerkprogrammierung 4
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
L Sockets übergeben Netzwerkprogrammierung 4
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
B Socket Was muss man bei Sockets beachten? Netzwerkprogrammierung 10
N Socket Sockets und Events Netzwerkprogrammierung 11
A Programm umschreiben von Pipes auf Sockets Netzwerkprogrammierung 12
B Paralleler Dateitransfer: Ein Client - Mehrere Sockets? Wie connecten? Netzwerkprogrammierung 16
D RMI oder Sockets Netzwerkprogrammierung 4
P Sockets +Port Forwarding = Chaos Netzwerkprogrammierung 4
clupus Exception beim Schließen eines Sockets Netzwerkprogrammierung 6
Q Thread und Sockets... Netzwerkprogrammierung 2
G Sockets und HTTP: Ende des Datenempfangs erkennen Netzwerkprogrammierung 3
J Array oder Object über Sockets Netzwerkprogrammierung 8
O Sockets -- Einsieg Netzwerkprogrammierung 3
S Sockets und gzip Netzwerkprogrammierung 8
B Nachricht über Sockets kommt nicht an Netzwerkprogrammierung 8
data89 Sockets: ein alter Hut - für Euch - für mich nicht! Netzwerkprogrammierung 10
S Wiedereinmal Sockets ;-) Netzwerkprogrammierung 15
J Ascii / Unicode bei Sockets? Netzwerkprogrammierung 2
G Datagram-Sockets für UDP-Kommunikation Netzwerkprogrammierung 2
K "Ende eines Sockets" Netzwerkprogrammierung 9
A Sockets Netzwerkprogrammierung 10
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
C Einfacher Filedownload mit Sockets geht nicht für pdffiles Netzwerkprogrammierung 16
E Sockets, readLine() Netzwerkprogrammierung 7
M Sockets und InputStream Netzwerkprogrammierung 8
G Verbindung über Sockets Netzwerkprogrammierung 2
S zip-files über sockets übertragen Netzwerkprogrammierung 11
G immer wieder gleiche Sockets Netzwerkprogrammierung 2
V Suche Alternative zu Sockets Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
A Datenverlust (zuviele Daten!) über Sockets Netzwerkprogrammierung 4
AlClemento Sockets -> BufferedReader Problem Netzwerkprogrammierung 2
F Problem mit Threads und Sockets Netzwerkprogrammierung 3
B Übertragung via Sockets Netzwerkprogrammierung 12
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
S Habe ein Problem mit Sockets -> Client Server Netzwerkprogrammierung 2
G Strings über Sockets senden Netzwerkprogrammierung 5
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
Y buch: Netwerprogrammierung und Sockets Netzwerkprogrammierung 2
B Eigenes Protokoll über Sockets verschicken Netzwerkprogrammierung 4
P Welche Art von Sockets für ein Spiel? Netzwerkprogrammierung 3
C Sockets über Internet Netzwerkprogrammierung 10
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
S Objekte zwischen Client und Server über Sockets senden Netzwerkprogrammierung 2
Z chat: wann http und wann sockets verwenden? Netzwerkprogrammierung 11
D Java Sockets Probs Netzwerkprogrammierung 4
N Verarbeitung nach Weiterleitung in Sockets Netzwerkprogrammierung 2
A Serialisierung über Sockets möglich? Netzwerkprogrammierung 3
M sockets (security) Netzwerkprogrammierung 2
C IRC CHAT auslesen -> Sockets/input und output Streams Netzwerkprogrammierung 9
J Verständnisfrage zu httpsConnect Netzwerkprogrammierung 3
K Websocket Verständnisfrage Netzwerkprogrammierung 7
M Socket Allgemeine Verständnisfrage Netzwerkprogrammierung 3
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
M Verständnisfrage zu den Streams Netzwerkprogrammierung 7
F Verständnisfrage Verfügbarkeit Socketverbindung Netzwerkprogrammierung 5
M Verständnisfrage zu RMI und Threads Netzwerkprogrammierung 2
S RMI Verständnisfrage Netzwerkprogrammierung 4
X RMI Verständnisfrage Netzwerkprogrammierung 3
B Allgemeine Verständnisfrage Netzwerkprogrammierung 7
F Chat Programm. Verständnisfrage while-Schleife Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben