![]() |
1
2
flush()将强制将数据发送到操作系统。操作系统可以缓冲数据,客户端的操作系统也可以。如果你想让操作系统更早地发送数据,我建议你尝试关闭Nagle的算法。setTcpNoDelay(true);但是,您会发现操作系统/驱动程序参数仍然可以引入一些缓冲/包协同。 如果您查看Sun的JDK 6 java.net.SocketOutputStream,您将看到flush()方法什么也不做。并非所有平台都保证如此,可能需要flush()。 |
![]() |
2
3
根据本机实现,套接字可能有一个缓冲区,在调用write()时不会发送字节。不过,flush()将强制发送字节。通常,发送较大的块而不是逐字节(对于流媒体,通常是从在接收器端建立缓冲区开始)是一种好的做法。最佳的网络使用可能是发送尽可能大的数据包(受MTU的限制)。要在java中有一个本地缓冲区,请将套接字outputstream包装在BufferedOutputStream中。 |
![]() |
3
1
另一个解决方案可能是
|
|
Gorgeo · Netty framework-多端口侦听 7 年前 |
![]() |
Yitian Zhang · 打开Heron UI非常慢 7 年前 |
![]() |
searain · 在流数据仍在缓冲区中时复制bigquery表 7 年前 |
|
Pliny · FFMPEG交互式模式帮助选项 7 年前 |
![]() |
JeyPay · PiCamera流媒体 7 年前 |