-1

Using some SocketChannels with NIO I am passing the key through this method to get a message. However, whenever it passes it displays a newline and I cannot for the life of me find out why and where. Any help would be appreciated.

public void messageHandler(SelectionKey key) throws IOException
    {
        SocketChannel ch = (SocketChannel) key.channel();
        StringBuilder sb = new StringBuilder();
        buf.clear();
        int read = 0;
        while( (read = ch.read(buf)) > 0 ) {
            buf.flip();
            byte[] bytes = new byte[buf.limit()];
            buf.get(bytes);
            sb.append(new String(bytes));
            buf.clear();
       }
}

EDITED: I left a print statement in there by mistake for my own debugging. That has nothing to do with it. I output this to sb.toString() and a new line is contained in there.

4

3 に答える 3

0

println() を呼び出しているため、改行が表示されます。

于 2013-10-18T23:08:50.463 に答える
0

もう一方の端が新しい行を送信していて、それがbytes

println() (デフォルトで自動フラッシュ) の使用は、print() および flush() に置き換えることができます。

ところで、ByteBuffer.wrap(bytes) を使用して、バイトを 2 回コピーしないようにすることができます。

for(byte b: bytes)
    if(b == 10 || b == 13) 
         System.err.println("Contains newline");
于 2013-10-18T23:03:01.330 に答える