使用Java套接字传输大量数据

时间:2017-03-27 13:38:28

标签: java sockets

我们正在使用Java nio AsynchronousServerSocketChannel和完成处理程序来写入套接字通道。

套接字用于在同一系统中运行的两个进程之间进行本地通信。

我们倾向于传输相当庞大的数据。我们使用缓冲区大小16384以分块方式传输数据。通过UDP发送不是一种选择。

还有什么方法可以改善套接字通道的性能或减少传输的有效负载吗?

最诚挚的问候, Saurav

1 个答案:

答案 0 :(得分:0)

您可以考虑许多替代方案。我希望您需要实现每个并使用您的应用程序测试硬件的实际性能,以便选择正确的。

  1. 您可以尝试调整当前的方法。一些想法:更大的缓冲区,双缓冲区(使用两个套接字,因此编写器始终有一个可用于写入的套接字,读者可以随时读取),只发送差异(如果您不断发送和更新版本的数据),压缩等等。
  2. 使用完全不同的方法,例如共享内存或内存映射文件。有很多可以帮助您入门的问题:thisthat
  3. 虽然详细信息取决于您的特定环境,但您可能可以将当前套接字实现的通信速度提高10倍(或者可能更多)。