任何人都可以向我指出有关打开从客户端到服务器的连接、读取二进制文件并通过网络连接可靠地发送其内容的最佳方法的教程吗?更好的是,有没有我可以参考的已经这样做的开源库?
6 回答
您应该研究二进制序列化并通过 TCP 套接字发送它。
关于不同类型的序列化的很好的解释:
http://www.dotnetspider.com/resources/408-XML-serialization-Binary-serialization.aspx
C# 中 TCP 客户端/服务器的良好入门:
这取决于您所说的网络是什么意思——如果您在本地网络上复制,您可以只使用 System.IO 中的文件复制操作。如果您想发送到远程服务器,我会使用 Web 服务来执行此操作。我压缩字节数组并将它们发送过来并在远程端解压缩。字节数组非常容易使用流写回磁盘。
我知道有些人更喜欢 base 64 字符串而不是 byte[]。不确定是否重要。
我不会使用 HTTP 或 FTP,因为对于单个文件来说开销太大而且编码太多,尤其是在 C# 中几乎已经为您制作了一个简单的 TCP 服务器。
如果您只需要通过网络进行操作,套接字可能是最佳途径。如果使用 TCP,您可以获得通信的可靠性,但会影响速度。如果您需要更高的性能,您可以尝试使用 UDP。但是 UDP 的缺点是不能保证数据包的传递和顺序,所以你需要自己编写所有的管道。
如果您需要通过 Web 本身传输文件(以编程方式,并且如果您不能使用 FTP),那么通过MTOM的 Web 服务方法可能会满足您的需求。
如果您在 Windows Server 2003 R2、Windows Vista 或 Windows Server 2008 之上构建并进行内部网络传输,则另一个选择是利用新的远程差分压缩功能。这不仅在压缩文件以最小化网络流量方面做得非常好,而且还被 DFS 复制直接使用。缺点(作为 .NET 开发人员),它是一种 COM+ 技术。
使用 HTTP 或 FTP 怎么样?他们是为此而生的。
亚历克斯
根据您将文件发送到的位置,您可能需要查看WebClient.UploadFileAsync和WebClient.UploadFile。