我正在使用 python 脚本使用标准 print() 参数生成数据。然后应将脚本的输出发送到本地主机 tcp 套接字 9999。
python script.py | nc -lk 9999
在客户端,我正在监听 localhost tcp socket 9999 以验证一切正常。
nc localhost 9999
是的,它正在运行。但看起来 nc 在发送之前缓冲了一些消息。结果,我在客户端遇到了巨大的延迟,这对我的应用程序来说是 Not Acceptable :我需要尽快获得数据。
有没有办法禁用缓冲区?
我注意到如果我发送更多消息,延迟会减少。但是,这对我来说并不是真正的解决方案。
最佳答案
你可以使用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
.
关于linux - 强制 netcat 立即发送消息(无缓冲),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34204697/