Blocking client and NIO server (Write back to the client issue)
Hi everybody,
I have to develop a NIO server which can handle hundreds J2ME clients.
The clients has no NIO capabilities and use blocking reading/writing
methods.
I have no trouble to send msg from the client to the server
registering OP_READ :
Client :
OutputStream os = s.getOutputStream();
Writer writer = new OutputStreamWriter(os, "US-ASCII");
out = new PrintWriter(writer, true);
out.println("msg");
My problem is to write back data to the client from the server after
the "msg" receiving :
int numRead = socketChannel.read(this.readBuffer);
if (numRead == -1) {
sk.channel().close();
}
else {
this.output = msgProcessing.process(this.readBuffer);
Socket socketClient = socketChannel.socket();
// Get the input/output stream.
OutputStream os = socketClient.getOutputStream();
Writer writer = new OutputStreamWriter(os, "US-ASCII");
PrintWriter out = new PrintWriter(writer, true);
out.println(this.output);
out.close();
}
this.readBuffer is OK and the output is fine too. When I try to send
the output, I get an Illegal Blocking mode exception. I tried to
configure the channel with the blocking mode at true or false but
apparently it doesn't matter in this case.
At the beginning, I also tried to write back information using the
ByteBuffer class instead of the output stream but nothing happens
either. though I didn't have Illegal Blocking mode exception but the
message never arrives to the client (it stays blocked on the reading
method).
On the client side, for reading data from the server, I did that :
InputStream is = s.getInputStream();
dis = new DataInputStream(is);
....
// Send the data to the server. (the ouput stream stuff)
// Wait for the output from the server.
....
dis.readUTF());
and
InputStream is = s.getInputStream();
in = new BufferedReader(new InputStreamReader(is));
....
// Send the data to the server. (the ouput stream stuff)
// Wait for the output from the server.
....
in.readLine();
These both techniques doesn't work for me. I'm a little stuck here so
If you have some information, I'd really appreciate ;)
Thank you, bye !