Hi,
ich wollte mich etwas mit Sockets beschaeftigen und hatte mir als "Aufgabe" ein Chat-System - genauer einen IRC-Client - ausgesucht. Mein im Moment noch generelles Verstaendnisproblem ist folgendes:
Der Standardfall, der von den Tutorials behandelt wird, ist, einen Socket zu oeffnen und daran zu lauschen, bis was kommt, dann eventuell zu antworten. Allerdings ist es beim gewoehnlichen Chat doch so, dass Lauschen und Schreiben komplett asynchron laufen. Wenn ich jedoch bereits am Socket lausche, kann ich nicht darauf schreiben.
Ich verbinde mich also mit meinem Socket zum IRC-Server und lausche am Socket, ob jemand im Chat etwas schreibt. Allerdings moechte ich doch gleichzeitig in der Lage sein, etwas zu schreiben und das geht dann nicht.
Also sinngemaess etwa so:
Nun dachte ich mir, dass ich Senden und Lauschen mal in zwei verschiedene gleichzeitig laufende Threads packe, aber Pustekuchen, das funktionierte leider nicht. :/
Also entweder ich habe bei diesem speziellen Versuch etwas uebersehen, oder ich habe einen grundlegenden Denkfehler.
Waere nett, wenn jemand mich auf die richtige Spur bringen koennte.
ich wollte mich etwas mit Sockets beschaeftigen und hatte mir als "Aufgabe" ein Chat-System - genauer einen IRC-Client - ausgesucht. Mein im Moment noch generelles Verstaendnisproblem ist folgendes:
Der Standardfall, der von den Tutorials behandelt wird, ist, einen Socket zu oeffnen und daran zu lauschen, bis was kommt, dann eventuell zu antworten. Allerdings ist es beim gewoehnlichen Chat doch so, dass Lauschen und Schreiben komplett asynchron laufen. Wenn ich jedoch bereits am Socket lausche, kann ich nicht darauf schreiben.
Ich verbinde mich also mit meinem Socket zum IRC-Server und lausche am Socket, ob jemand im Chat etwas schreibt. Allerdings moechte ich doch gleichzeitig in der Lage sein, etwas zu schreiben und das geht dann nicht.
Also sinngemaess etwa so:
Code:
// socket ist mein Socket zum Server
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String line = in.readLine();
// und nun wird blockiert, bis etwas kommt
Nun dachte ich mir, dass ich Senden und Lauschen mal in zwei verschiedene gleichzeitig laufende Threads packe, aber Pustekuchen, das funktionierte leider nicht. :/
Also entweder ich habe bei diesem speziellen Versuch etwas uebersehen, oder ich habe einen grundlegenden Denkfehler.
Waere nett, wenn jemand mich auf die richtige Spur bringen koennte.