SocketChannel发送大量数据时影响速度的因素有哪些?

What are the factors affecting the speed in sending large amount of data in SocketChannel?

谁能告诉我在SocketChannel中发送大量数据时影响速度的具体因素有哪些?例如字节分配是否影响速度?

主要的限制因素依次是:

  1. 网络带宽,我指的是对等点之间路径最慢部分的带宽。
  2. 接收方套接字接收缓冲区的大小。如果它小于路径的带宽延迟乘积,您将无法利用全部可用带宽。
  3. 您发送的速度。与评论中的建议相反,假设阻塞模式,您应该一次发送尽可能多的信息,并尽可能快地重复发送。在非阻塞模式下,它要复杂得多,但如果带宽利用率是您的目标,您最好使用阻塞模式。你可能也最好使用 java.net 而不是 NIO。