netcat 能否以直通方式工作

Can netcat be made to work in a passthrough way

我正在使用 netcat 作为某些服务和 Spark 流实例之间的桥梁。例如,该服务将消息发送到 net cat 正在侦听的 host:port,然后想法是 spark 然后可以使用它。然而,有没有一种方法可以使 netcat 直通,即充当一个非常简单的服务器,并从字面上听和发出。

ncat -lk localhost 5005

这表明我可以通过我的第一个服务接收消息。但是我从听相同 host:port 的 spark 中什么也得不到。有什么办法可以做到这一点吗?

一个建议是将管道与 mkfifo backpipe 一起使用,但是现在的问题是当 运行 我的 spark 实例正在侦听 5006 但似乎此连接似乎不存在。我的服务发送到 5005,然后 netcat 应该将其通过管道传输到 5006,但是我怎样才能使 5006 上的服务始终存在,以便我的 spark 实例可以收听它?

mkfifo backpipe
nc -kl localhost 5005 0<backpipe | nc localhost 5006 1>backpipe

我还尝试了以下措施:

nc -klp 5005 -w 5 localhost 5006

但问题始终是 spark 无法使用并出现以下错误:

Deregistered receiver for stream 0: Restarting receiver with delay 2000ms: Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused

你用的是什么版本的netcat?什么操作系统?如果您使用传统的 netcat(不是用于 Spark 示例的 BSD-one),您必须提供端口参数:

nc -lk -p 5005