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

有帮助吗?

解决方案

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

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

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

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

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

其他提示

这取决于您所说的网络的含义 - 如果您在本地网络上复制,则可以仅使用 System.IO 内的文件复制操作。如果您想发送到远程服务器,我会使用网络服务来完成此操作。我压缩字节数组并将它们发送到远程端并解压缩。使用流将字节数组写回磁盘非常容易。

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

使用 HTTP 或 FTP 怎么样?它们就是为此而生的。

亚历克斯

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

我不会使用 HTTP 或 FTP,对于单个文件来说,开销太大,需要编写太多代码,尤其是几乎已经用 C# 为您制作了一个简单的 TCP 服务器。

如果您只需通过网络进行操作,套接字可能是最佳途径。如果使用 TCP,可以获得通信的可靠性,但会影响速度。如果您需要更高的性能,可以尝试使用 UDP。但 UDP 的缺点是无法保证数据包传送和顺序,因此您需要自己编写所有管道。

如果您需要通过网络本身传输文件(以编程方式,并且如果您不能使用 FTP),则可以通过以下方式使用网络服务方法: MTOM 可能适合您的需求。

如果您在 Windows Server 2003 R2、Windows Vista 或 Windows Server 2008 之上进行构建并进行内部网络传输,另一个选择是利用新的 远程差分压缩 特征。这不仅可以很好地压缩文件以最大限度地减少网络流量,而且还可以直接由 DFS 复制使用。缺点(作为 .NET 开发人员),它是一种 COM+ 技术。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top