我可以使用CopyTo在客户端和服务器之间复制文件来实现进度条

时间:2015-01-12 10:54:03

标签: c# sockets file-io filestream networkstream

我使用FileStream.CopyTo复制文件为我编写了一个文件共享应用程序。要在其中添加进度条工具,我发现了十几个链接,并使用CallBack方法使用CopyFileEx表示使用进度条。详细阅读MSDN docs.I后,为了同一目的找到了另一个选项WebClient,让我更加困惑。然后我浏览了here,其中作者没有谈到{{1}但是也提倡Stream.CopyTo

我已经完成了使用CopyFileEx方法的编码。对于进度条,它会为我提供设施吗?

PS。我搜索了很多,但没有链接向我展示如何使用CopyTo实现它。

这是我的代码对于客户端:

CopyTo

服务器端:

         NetworkStream netstream = clientSocket.GetStream();


        using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            try
            {
                TransmitFileName(netstream, Path.GetFileName(path));

              //  MessageBox.Show("Starting Data Transfer");

                int data_len = (int)fs.Length;
                byte[] buffer = new byte[bufferSize];
                int totalbytes = 0;
                while (totalbytes < data_len)
                {

                    var bytesread = fs.Read(buffer, 0, buffer.Length);
                    if (totalbytes == data_len) { break; }
                    try
                    {
                        netstream.Write(buffer, 0, bytesread);
                        totalbytes += bytesread;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);

                    }
                 }

               string suff_tb= SizeSuffix(totalbytes);

                MessageBox.Show("Total Bytes Receieved" + suff_tb);

            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());

            }
            finally
            {
                MessageBox.Show("Data transfer completed");
                fs.Close();
                netstream.Close();

            }

        }

0 个答案:

没有答案