求高手点拨Socket通信中的一个“字节流文本传输代码实现效果与预期不符”的有关问题原因.

求高手点拨Socket通信中的一个“字节流文本传输代码实现效果与预期不符”的问题原因..高手,您好:我在写一个S

求高手点拨Socket通信中的一个“字节流文本传输代码实现效果与预期不符”的问题原因..
高手,您好:
    我在写一个Socket通信程序,现在我碰到了一个问题..
    在进行Socket通信的时候,我写出了一个C端的测试类,源代码如下:
    


    希望高手能够点拨:
    为什么我的C端的写出数据为:
    “CJ必胜!!CJCO!!CJHMF,这个问题解决了,我高兴了,今天我建群,加入了130个人\r\n我们群里的人,都决心互相学习,增长本领”.
    在我的S端的console窗口中的输出却为:
    “我们群里的人,都决心互相学习,增长本领”.
    少了前面的:
    “CJ必胜!!CJCO!!CJHMF,这个问题解决了,我高兴了,今天我建群,加入了130个人\r\n”.
    的字符串数据...
    希望高手能够点拨我这个问题出现的原因..
    谢谢高手!!
    一百分奉上!!
                                                                       一位求知者


                                                                      2013年11月4日中午12点44分   socket thread Java调试 Java异常 Java排错
[解决办法]
\r\n 换行导致的。console欺骗了你
[解决办法]
这个不是你的问题,是JDK的原因。你可以查下,println的源代码,最终你可以追踪到一个叫write的函数,其代码是

private void write(String s) {
try {
    synchronized (this) {
ensureOpen();
textOut.write(s);
textOut.flushBuffer();
charOut.flushBuffer();
if (autoFlush && (s.indexOf('\n') >= 0))
    out.flush();
    }
}
catch (InterruptedIOException x) {
    Thread.currentThread().interrupt();
}
catch (IOException x) {
    trouble = true;
}
    }
在if判断里,很清楚地看到,如果\n的位置在s中的位置>=0的话,那么输出就flush掉了。所以,按照你在客户端的输入字符串来看,\n之前的字符串是被自动flush掉了,因此没有显示。想解决这个问题,估计你要自己重写System中print函数了。
[解决办法]
楼上的意思:你的客户端已经接收到数据了,只是没有打印出来而已,问题出现在了println上了