【问题标题】:How to send folders in c# through TCP?c#中如何通过TCP发送文件夹?
【发布时间】:2011-04-25 00:57:13
【问题描述】:

我在寻找通过 TCP 发送整个文件夹的方法时遇到了麻烦。我最初的想法是,发送者发送一个包含给定文件路径的字符串,例如 C://MyFolder/MySubFolder/MyFile,然后接收者创建文件夹和子文件夹。然后发件人继续发送包含其目录的文件。

我认为这不是最好的方法,这是不言而喻的。有更好的方法吗?

编辑:

对不起,如果我有点含糊。我有一个文件传输应用程序,显然可以发送/接收文件,我想添加一种发送整个文件夹的方法。

【问题讨论】:

  • "有更好的方法吗?" - FTP?
  • @Mitch Wheat,是的,很遗憾它必须是 TCP

标签: c# file directory transfer


【解决方案1】:

为此,您需要某种文件传输协议(即 FTP)。在发送端使用一个易于设置的 c# FTP 服务器库(即:http://sourceforge.net/projects/csftpserver/)并在客户端使用FtpWebRequest 来获取整个文件夹结构。

【讨论】:

    【解决方案2】:

    使用著名的存档方法(zip、rar...)并传输数据。在对等端提取。这样保存:

    1. 实现容易出错 递归模式。
    2. 您的带宽

    【讨论】:

    • 是的,我使用了 DotNetZip 并将整个文件夹存档,然后在接收器处将其解压缩,然后删除了 zip 文件。工作完美,完全按照它应该的方式工作,但遗憾的是它被拒绝了。我无法归档文件
    • 为什么被拒绝了?是作业被老师拒绝还是你有技术问题?无论如何,如果你要自己实现它,你应该编写一个迭代文件夹的递归函数,发送它们的名称(你需要一些你自己的简单协议)和里面的文件。
    • 是的,一个技术问题。如果我要发送一个包含 5gb 文件的文件夹,则归档将花费大量时间和资源。我现在实际上正在做你所说的,但这有点困难,因为接收器应用程序已经有一个文件协议(一个糟糕的协议)。我正在考虑重做接收应用程序。
    • 因此您对遗留代码的选择有限。使用文件/文件夹名称的协议。从根文件夹开始,传输名称(对等方将创建文件夹),然后传输里面的文件。然后进入下一个级别并递归地做同样的事情(这不像我说的那么容易!)。我建议使用散列来确保文件传输时没有损坏(即 MD5)。您应该处理任何不需要的情况,例如网络问题......还有很多工作要做
    • 是的,这真的不容易。这是作为我们实习的一部分的公司。我所做的是首先发送文件夹结构,然后接收方创建该文件夹结构,然后传输文件。谢谢!
    【解决方案3】:

    您是否为此目的查看过现有协议?看来您想克隆 FTP,可能在两者之间使用像 tar 这样的流式传输机制。

    【讨论】:

      【解决方案4】:

      如果您考虑压缩/压缩: 你可以看看 GZipStream 类。

      http://www.geekpedia.com/tutorial190_Zipping-files-using-GZipStream.html

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 2019-10-01
        • 2016-02-15
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多