当前位置:  开发笔记 > 编程语言 > 正文

强制netcat立即发送消息(不缓冲)

如何解决《强制netcat立即发送消息(不缓冲)》经验,为你挑选了1个好方法。

我正在使用python脚本使用标准的print()参数生成数据.然后应将脚本的输出发送到localhost tcp socket 9999.

python script.py | nc -lk 9999

在客户端我正在监听localhost tcp socket 9999来验证一切正常.

nc localhost 9999

是的,它正在发挥作用.但看起来nc在发送之前会缓冲一些消息.结果,我在客户端遇到了很大的延迟,这对我的应用程序来说是不可接受的:我尽快需要数据.

有没有办法禁用缓冲区?

我注意到如果我发送更多消息,延迟会减少.但是,这对我来说并不是真正的解决方案.



1> hek2mgl..:

您可以使用以下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.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有