socket tcp 文件传输 速度慢,主要代码如下void ReceiveFile()
{
                const int length = 1024;
                FileStream filestream = new FileStream(filetemp, FileMode.OpenOrCreate, FileAccess.Write);
                NetworkStream ns = new NetworkStream(socket);
                byte[] buffer = new byte[length];
                long haveRead = 0;
                //把流的信息写入新文件中
                while (haveRead <filelength)
                {
                    int size = ns.Read(buffer, 0, length);
                    filestream.Write(buffer, 0, size);
                    filestream.Flush();
                    if (size > 0)
                    {
                        haveRead += Convert.ToInt64(size);
                    }
                }
                filestream.Close();
}        public void SendFile(Socket socket, string filename)
        {
            NetworkStream stream = new NetworkStream(socket);
            try
            {
                FileStream filestream = new FileStream(filename, FileMode.Open, FileAccess.Read);
                byte[] buffer = new byte[1024];                filestream.Seek(0, SeekOrigin.Begin);
                int number = 0;
                while ((number = filestream.Read(buffer, 0, 1024)) != 0)
                {
                    stream.Write(buffer, 0, number);
                    stream.Flush();
                    Console.WriteLine(filestream.Position);
                }
                filestream.Close();
                stream.Close();
            }
            catch (Exception ex)
            {
                Log.Write(ex.Message);
            }
            finally
            {
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
            }
        }大家帮我看看哈 ,在局域网的速度只有每秒0.5M ,速度实在是有点低。

解决方案 »

  1.   

    socket的sendbuffsize和receivebuffsize都设置的多大??
    如果设置不当会影响速度的。。
    本身网络是否有问题从而限制了速度呢?
      

  2.   

    参考
    http://topic.csdn.net/t/20050218/22/3791018.html#
      

  3.   


    那是个无分帖,实在看不出谁说得对,我用的是同步socket,但是是独立线程,这是否有影响?或者改变发送和接收的 buffer size?
      

  4.   

    const int length = 1024; 
    改成 const int length = 1024 * 100;
    速度会快很多. 
      

  5.   

    发送时,每次读文件不要只读1KB,建议每次读1MB以上,可以分多次来发送。
    接收时,把缓冲区开大一些,多次接收后累计到一定程度后一次写入文件。
    发送和接收都不要Flush。