是否可以使netcat以直通的方式工作

时间:2016-06-30 11:19:49

标签: linux networking apache-spark network-programming netcat

我使用netcat作为某些服务和火花流实例之间的桥梁。例如,服务向网络猫正在侦听的host:port发送消息,然后想法是火花可以消耗它。然而,有没有办法使netcat passthrough,即作为一个非常简单的服务器,字面上听和发出。

ncat -lk localhost 5005

这表明我可以从我的第一个服务发送我的消息。但是我听不到同一个主机的火花:端口。有没有办法使这项工作?

一个建议是使用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

但问题始终是火花无法消耗,并出现以下错误:

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

1 个答案:

答案 0 :(得分:1)

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

nc -lk -p 5005