我需要通过 Internet 将文件从 Java 服务器快速传输到 C++ 客户端,而许多客户端通常需要相同的文件。我正在看 Java 中的 transferTo() ,这听起来像是一个经过适当优化的函数来发送文件。但是,我不确定何时使用 transferTo() 如何在 C++ 中最好地接收它(即它只是一个原始数据传输,我如何确定文件何时在客户端结束,等等)。我需要它才能在 Windows 和 Linux 上工作。此外,除了 transferTo() 之外,还有什么方法可以提高效率,尤其是利用许多客户端通常需要相同文件的事实?我不确定如何说多播等。此外,我使用的是应用程序级安全性而不是 VPN,并且在 Java 服务器上,使用 AES 加密并使用 MAC 数字签名,所以我也在寻找一个跨平台库推荐,以最小的痛苦处理 C++ 端的加密。我非常精通 C++,但以前没有网络编程经验,所以请考虑比任何建议。谢谢。
问问题
884 次
4 回答
2
嵌入式网络服务器?http-transfers 对您来说足够高效吗?
我记得见过的最简单的可嵌入 Java 网络服务器是http://acme.com/java/software/Acme.Serve.Serve.html。我们在生产中使用嵌入式 Jetty 6,但这需要更多的麻烦。
如果您的客户一开始不知道在哪里可以找到您的网络服务器,请考虑使用 Zeroconf。http://jmdns.sourceforge.net/
于 2009-10-30T05:59:39.973 回答
1
出于可扩展性的原因,Thorbjørns 建议使用 http 似乎是一个非常好的主意,因为它可以让您轻松设置 http 代理进行缓存,使用标准负载平衡工具等等。
如果您希望传输的不仅仅是数据块,您可能需要查看 googles 协议缓冲区。它们允许在 java 和 c++ 端进行非常简单和快速的编码/解码。
于 2009-10-30T10:46:44.407 回答
0
考虑将文件分块并通过 UDP 数据报发送。C++ 可以在收到它时重新编译。您是否考虑过实施/嵌入现有的 P2P 协议实施?
于 2009-10-30T05:11:09.057 回答
0
如果您需要向许多客户端进行有效传输,那么您的瓶颈就是服务器。
为此,请查看 bit-torrent 协议,因为它在客户端之间分配传输。
于 2009-10-30T16:48:49.920 回答