【问题标题】:Socket communication between Java and C: Good buffer sizeJava 和 C 之间的套接字通信:良好的缓冲区大小
【发布时间】:2014-04-23 22:58:45
【问题描述】:

我必须在用 Java 编写的服务器和用 C 编写的客户端之间实现套接字通信。

我必须传输的最大数据量为 64KB。

在大多数套接字通信教程中,他们使用的缓冲区大小约为 1024 字节或更小。 将缓冲区设置为 64KB 是否存在(可能是性能)问题?

这两个软件部分将运行在同一台机器上或至少在同一个局域网中。

如果出现问题:如何处理一般大于缓冲区的消息?

【问题讨论】:

  • 我自己一直用8192。越大越好,直到收益递减。
  • @EJP - 是的 - 我也不懂迷你缓冲区,尤其是。如果接收到的数据将被写入某个具有 8k 簇的文件。

标签: java c sockets tcp buffer


【解决方案1】:

缓冲区可以小于消息,而接收方消耗数据的速度与发送方生成数据的速度一样快。更大的缓冲区让您的接收者有更多的时间来处理消息,但通常您不需要巨大的缓冲区:例如,当您下载软件时,文件的大小可能超过 1GB,但您的浏览器/ftp 客户端只是读取缓冲区并将数据存储在本地硬盘的文件中。

通常,您可以忽略用于创建客户端或服务器的语言,只有网络协议很重要。每种语言都有自己的库来轻松处理套接字。

【讨论】:

    【解决方案2】:

    我建议使用更大的缓冲区,但我怀疑无论您使用 1 KB 还是 64 KB,您看到的差异都不到 5%。

    注意:b = bit and B = byte, k = 1000 and K = 1024 最好不要混淆(不是说它可能在这里)

    【讨论】:

      猜你喜欢
      • 2011-02-18
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 2012-10-07
      相关资源
      最近更新 更多