Hi Trustin, thank you for the quick response, but unfortunatley the new MINA-Release 1.1.1 doesn't solve my problem. The problem described below still occurs.
Here are some infos of my environment: Windows 2000 SP 4 JDK 1.5.0_06 + JDK 1.6.0_01 MINA 1.1.1 Markus "Trustin Lee" <[EMAIL PROTECTED]> schrieb am 18.07.2007 16:18:20: > Hi Markus, > > Which version of MINA are you using? We've just released a new > version that fixes the problem you are experiencing: > > http://www.apache.org/dyn/closer.cgi/mina/1.1.1/ > > We didn't announce the new release because of propagation delay > between mirrors. Please use the backup sites if you get 404. > > HTH, > Trustin > > On 7/18/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > Hi, > > > > I have problems with garbled data send by a StreamIOHandler. Here is my > > code (short Version ;-): > > > > Server: > > ===== > > > > new SocketAcceptor().bind( > > new InetSocketAddress(port), > > new StreamIoHandler() { > > protected void processStreamIo( > > IoSession session, > > InputStream in, > > OutputStream out > > ) { > > new Thread(new Worker(in, out)).start(); > > } > > }, > > new SocketAcceptorConfig() > > ); > > > > > > public class Worker implements Runnable { > > private InputStream is; > > private OutputStream os; > > > > public Worker(InputStream is, OutputStream os) { > > this.is = is; > > this.os = os; > > } > > > > public void run() { > > // read request > > ... > > > > // write response > > > > byte[] buffer = new byte[1024]; > > for (int i = 0; i < 100; i++) { > > for (int j = 0; j < buffer.length; j++) { > > buffer[j] = (byte) (i + j); > > } > > // buffer.clone() because of Bug DIRMINA-369 > > os.write((byte[]) buffer.clone()); > > // os.flush() to wait for completion (necessary?) > > os.flush(); > > } > > } > > } > > > > > > Client > > ===== > > > > Socket socket = new Socket(adress, port); > > > > // write request > > > > socket.getOutputStream(). ...; > > > > // read response > > > > InputStream is = socket.getInputStream(); > > byte[] buffer = new byte[1024]; > > int size = 0; > > int blockCount = 0; > > while ((size = is.read(buffer)) > 0) { > > for (int i = 0; i < buffer.length; i++) { > > if ((byte) (blockCount + i) != buffer[i]) { > > throw new RuntimeException("garbled data"); > > } > > } > > blockCount++; > > } > > > > > > --------------------------- > > > > If I choose the buffer for send and receive small enough (e. g. 64 byte) > > everthing works. But with a buffersize of 1024 bytes the response data is > > garbled. If I insert a sleep of 50 ms at serverside between every write, > > it works again, even with a buffersize of 1024 bytes. > > > > Thanks for help > > Markus > > > -- > what we call human nature is actually human habit > -- > http://gleamynode.net/ > -- > PGP Key ID: 0x0255ECA6
