linux - 强制 netcat 立即发送消息(无缓冲)

标签 linux netcat

我正在使用 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/

相关文章:

c++ - Golang 从 TCP 端口读取常量数据

c - 通过 UDP 套接字发送缓冲区时,延迟有时会增加

linux - 几个数据包后 telnet/nc 无法发送数据包

linux - 使用 netcat 并写入远程 shell 的标准输入

docker - 首次连接后docker容器端口关闭

linux - ncat web服务器如何获取请求参数和客户端ip

c - 如何在 linux C 的用户空间程序中找到 sigset_t 的补码

linux - Linux程序员使用什么工具来开发程序?

linux - Linux 中的离线 ARM 内核是否仍然耗电?

linux - 在 Ubuntu 14.04.3 中运行 oracle imp/exp