使用C#通过网络发送文件的最佳方法是什么?

时间:2008-09-18 18:19:49

标签: c# .net ftp tcp data-transfer

有人能指点我一个关于打开从客户端到服务器的连接的最佳方法的教程,读入二进制文件并通过网络连接可靠地发送其内容吗?更好的是,是否有一个开源库,我已经可以参考了这个?

6 个答案:

答案 0 :(得分:3)

您应该研究二进制序列化并通过TCP套接字发送它。

对不同类型序列化的良好解释:

http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx

C#中TCP客户端/服务器的良好入门:

http://www.codeproject.com/KB/IP/tcpclientserver.aspx

答案 1 :(得分:2)

这取决于您对网络的意义 - 如果您在本地网络上进行复制,则可以使用System.IO中的文件复制操作。如果您想发送到远程服务器,我使用Web服务。我压缩字节数组并在远程端发送和解压缩。字节数组非常容易使用流写回磁盘。

我知道有些人更喜欢base 64字符串而不是byte []。不确定是否重要。

答案 2 :(得分:0)

如何使用HTTP或FTP?他们就是为此而做的。

亚历

答案 3 :(得分:0)

根据您将文件发送到的位置,您可能需要查看WebClient.UploadFileAsyncWebClient.UploadFile

答案 4 :(得分:0)

我不会使用HTTP或FTP,对于单个文件来说,它的开销太大而且代码太多,特别是在C#中几乎已经为你准备了一个简单的TCP服务器。

答案 5 :(得分:0)

如果您不得不通过网络进行套接字,那么套接字可能是最好的选择。如果使用TCP,则可以获得通信的可靠性,但会对速度产生影响。如果您需要更高的性能,可以尝试使用UDP。但UDP的缺点是数据包传递和订单无法保证,所以你需要自己编写所有的管道。

如果您需要通过网络传输文件(以编程方式,如果您不能使用FTP),那么通过MTOM的网络服务方法可能符合您的需求。

如果您在Windows Server 2003 R2,Windows Vista或Windows Server 2008之上构建并进行内部网络传输,则另一个选择是利用新的Remote Differential Compression功能。这不仅可以很好地压缩文件以最小化网络流量,而且还可以直接由DFS复制使用。下行(作为.NET开发人员),它是一种COM +技术。