我想运行一个 shell 脚本,当它从任何地方收到数据包时,就将数据包发送到本地主机(环回)。
我在用netcat
。
nc -lp $port
,然后就echo test | nc localhost $port
可以工作了。
但是,在 shell 脚本中,当接收到包时可以执行代码,但是却不行。
nc -lp $port | ./a.sh
然后执行以下脚本:
#!/bin/bash
while read socket
do
echo test | nc localhost $port
done
它给出了错误:
localhost [127.0.0.1] 2012 (?) : Connection refused
对此原因可能有一个简单的解释。
我想知道:我是否可以做我想做的事?
我为什么要这样做:编写一个简单的网络应用程序,它可以在节点之间或同一节点上的帐户之间进行通信,并且我想对两者使用相同的代码(因此同一节点上的帐户之间的交互是通过环回消息而不是直接进行。)
答案1
好的。我现在已经解决了这个问题。导致该错误的原因是多方面的。
首先,netcat
不允许多个连接(参见https://stackoverflow.com/a/29780420/19923651以供参考。 )
我通过使用来解决这个问题socat
。
然后还有一些其他问题,让我误解了我的调试尝试。