如何解决重定向到文件的 Netcat 数据包卡在缓冲区中
如果有人问过这个问题,我很抱歉,但我没有找到。
我有一个 netcat 服务器侦听本地端口并将输出重定向到文件。
nc -l -u -p 11000 > test.json
这一切都很好。问题是写入该端口的第 3 方可执行文件正在发送没有任何终止字符(例如,回车或换行)的数据包。我知道这一点是因为我已经在wireshark 中捕获了数据包并对其进行了检查。结果,这些消息似乎在某个时候被困在缓冲区中,永远不会被写入。
我发现的唯一解决方法是从包含换行符的第 3 方可执行文件发送欺骗数据包。这些欺骗性数据包会导致正在捕获消息的缓冲区清除并将输出重定向到文件。
这是一个清除缓冲区的欺骗命令示例。
"" | nc -u -s 127.0.0.1 -p 61618 localhost 11000
我的假设是缓冲区存在于 nc 中,因为它似乎是特定于源的(即,我必须欺骗数据包的源才能清除缓冲区)。显而易见的解决方案是将换行符附加到我关心的数据包中,但不幸的是,我无法控制写入这些数据包的第 3 方可执行文件。
有什么建议吗?我宁愿不编写整个应用程序来简单地捕获消息并将它们写入文件。我的 shell 环境是 PowerShell,因此诸如 stdbuf 或 unbuffer 之类的伪解决方法对我不起作用(如果我怀疑在 netcat 中发生缓冲,这些方法无论如何也无济于事)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。