public void process()
        {
            int bufferSize = s.Available;
            NetworkStream ns = new NetworkStream(s, FileAccess.ReadWrite);
            bs = new BufferedStream(ns,bufferSize);
            sr = new StreamReader(bs);
            sw = new StreamWriter(bs);
            while (!sr.EndOfStream)
            {
                Console.WriteLine(sr.ReadLine());
            }
            s.Shutdown(SocketShutdown.Both);
            ns.Close();
        }当我使用了BufferedStream后,取出的数据不完全。不使用BufferedStream获得的数据就是完整的。原本以为是缓存过少,后来在构造时指定了以实际接收的字节为缓存的大小,可情况仍一样。始终不明白这是怎么回事。望高手指点。

解决方案 »

  1.   

    多谢UP,这个问题很棘手,Google,Baidu找遍也找不出原因。程序也没异常。碰鬼了。
      

  2.   

    bs.flush?是没有这个引起的吗?有人告诉我为什么会这样吗?
      

  3.   

    我以前也遇见过这个情况,不知道是否相似,就是TcpListener 侦听TCP连接,,其它连如果这样是一个线程的话,所以你在处理这个线程时接也就连接不上,
    而改为有一个连接上请求时,就把这个连接给一个新的处理线程,让这个异步线程去处理,而侦听的线程又处于等待连接,这样就能连接上,所以同理,你这个可能是流正在处理,而此时socket发送的数据就没有成功!!