2011-04-25 39 views
3

我无法通过TCP发送整个文件夹。我最初的想法是,发件人发送一个包含给定文件路径的字符串,例如C:// MyFolder/MySubFolder/MyFile,然后接收者创建文件夹和子文件夹。然后发件人继续发送包含其目录的文件。如何通过TCP在c#中发送文件夹?

我认为这不是说这样做的最好方法。有更好的方法吗?

编辑:

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

+4

“有没有更好的方法? - FTP? – 2011-04-25 01:03:03

+0

@Mitch小麦,是的,可悲的是它必须是TCP – Raphael 2011-04-25 02:09:54

回答

1

使用着名的归档方法(zip,rar ...)和传输数据。提取在同行方。这样你节省了:

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

是的,我用DotNetZip并归档整个文件夹,然后在接收器中提取它,然后删除zip文件。完美而完美地工作,但很遗憾,它被拒绝了。我无法归档文件 – Raphael 2011-04-25 02:12:01

+0

为什么它被拒绝?这是一个家庭作业,并被你的老师拒绝,或者你有一个技术问题?无论如何,如果你要自己实现它,你应该写一个迭代文件夹的递归函数,发送他们的名字(你需要一些简单的协议)和文件。 – Xaqron 2011-04-25 07:39:50

+0

是一个技术问题。如果我要发送一个内含5GB文件的文件夹,则需要大量时间和资源才能存档。我实际上正在做你现在正在说的内容,但它有点难,因为接收器应用程序已经有一个文件协议(很差)。我正在考虑重做接收应用程序。 – Raphael 2011-04-25 07:52:30

1

你有没有看着为此,现有的协议?看来你想克隆FTP,也许有一个流媒体机制,如tar之间。

2

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