java - 使用java套接字传输大量数据

标签 java sockets

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

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

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

是否可以采取其他措施来提高套接字 channel 的性能或减少传输的有效负载?

最诚挚的问候, 索拉夫

最佳答案

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

  1. 您可以尝试调整当前的方法。一些想法:更大的缓冲区、双缓冲区(使用两个套接字,以便写入者始终有一个可用于写入的套接字,而读取器始终可以读取)、仅发送差异(如果您连续发送和更新数据版本)、压缩等。
  2. 使用完全不同的方法,例如共享内存或内存映射文件。有几个问题有很多好的答案,可以帮助您入门:thisthat .

虽然详细信息取决于您的具体环境,但与当前的套接字实现相比,您可能可以将通信速度提高 10 倍(或者可能显着更高)。

关于java - 使用java套接字传输大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43048032/

相关文章:

java - 根据自定义设置日期格式

java - 使用 ProcessBuilder 在 Java 中创建路径

c - 以不同方式处理信号

python - 属性错误 : 'module' object has no attribute 'WebSocketApp'

c# - 杀死阻塞的 UDP 套接字

java - 使用 jSTL out 标签真的是最佳实践吗?

java - J2ME setCurrent()

c - 为什么accept()创建一个新的套接字?

c - c 中的套接字 tcp 示例

java - 为什么 Log4j rootLogger 不根据事件级别过滤日志事件?