看到一段代码如下
            //接收头一批数据
            var count = socket.Receive(receiveBufferBytes);
            //转化成string 
            var getString = Encoding.Default.GetString(receiveBufferBytes);
           //创建文件流
            FileStream fs = new FileStream(@"d:\\Test.html", FileMode.OpenOrCreate);
            //创建缓存流
            BufferedStream bs = new BufferedStream(fs);
            using (fs)
            {
                using (bs)
                {
                    byte[] finalContent = Encoding.Default.GetBytes(getString.ToCharArray());
                    //将头一批数据写入本地硬盘
                    bs.Write(finalContent, 0, finalContent.Length);
                    //循环通过socket接收数据
                    while (count > 0)
                    {
                        count = socket.Receive(receiveBufferBytes, receiveBufferBytes.Length, SocketFlags.None);
                        //直接将获取到的byte数据写入本地硬盘
                        bs.Write(receiveBufferBytes, 0, receiveBufferBytes.Length);
                        Console.WriteLine(Encoding.Default.GetString(receiveBufferBytes));
                    }
                    bs.Flush();
                    fs.Flush();
                    bs.Close();
                    fs.Close();
                }
            }我的疑问是
为什么finalContent 不是直接Copy receiveBufferBytes 的count字节,而要使用Encoding进行两次转换呢?

解决方案 »

  1.   

    不是吧,应该和
    byte[] buf = new byte[count];
    Array.copy(receiveBufferBytes,buf,count);
    buf 和上面的
    finalContent 
    应该是一样的
      

  2.   

    也许,我说的不清楚,大家看下思路
    byte[] receiveBufferBytes = new byte[4096];          var count = socket.Receive(receiveBufferBytes);
                //转化成string 
    var getString = Encoding.Default.GetString(receiveBufferBytes);byte[] finalContent = Encoding.Default.GetBytes(getString.ToCharArray());这是他的办法

    byte[] buf = new byte[count];
    Array.copy(receiveBufferBytes,buf,count);
    byte[] finalContent = buf;
    难道接不一样?
      

  3.   

    哦哦,不懂得排版格式,有时间学学吧
    给连接过去看代码可能舒服些
    http://www.cnblogs.com/JimmyZheng/archive/2012/04/25/2470277.html
    直接拉倒最下面的例子