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