我正在使用python脚本使用标准的print()参数生成数据.然后应将脚本的输出发送到localhost tcp socket 9999.
python script.py | nc -lk 9999
在客户端我正在监听localhost tcp socket 9999来验证一切正常.
nc localhost 9999
是的,它正在发挥作用.但看起来nc在发送之前会缓冲一些消息.结果,我在客户端遇到了很大的延迟,这对我的应用程序来说是不可接受的:我尽快需要数据.
有没有办法禁用缓冲区?
我注意到如果我发送更多消息,延迟会减少.但是,这对我来说并不是真正的解决方案.
您可以使用以下stdbuf
命令:
stdbuf -o0 python script.py | stdbuf -i0 nc -lk 9999
或python的-u Unbuffered选项:
python -u script.py | stdbuf -i0 nc -lk 9999
I/O缓冲是,除非程序由它自己显式处理它,由libc处理.stdbuf
影响那种行为.进一步阅读man stdbuf
.