我正在尝试调试为什么不通过 Unix 域套接字发送数据。
我有 2 个应用程序应该通过 UDS 进行通信,但不是。
为了测试我做了以下事情:
使用socat
,我在这样的套接字上监听:
socat -x -u UNIX-RECV:/tmp/dd.sock STDOUT
并使用 netcat 发送这样的数据:
echo "hello" | nc -U -w1 /tmp/dd.sock
什么都没发生。
但是,如果我还将 socat 设置为代理,以侦听 UDP 端口,并将其写入套接字,如下所示:
socat -s -u UDP-RECV:9988 UNIX-SENDTO:/tmp/dd.sock
然后通过netcat
UDP 端口发送工作:
echo "Hello" | nc -u localhost 9988
我还能够让我的客户端应用程序将 UDP 写入代理,并且在写入 unix 套接字时没有成功。
我想了解为什么socat
不接收由 写入它的数据nc
,但如果我通过 UDP 代理则可以。
使用 Amazon Linux 4.14.101-75.76.amzn1.x86_64
您已经使用+设置了一个侦听数据报套接字,并试图通过使用.
socat
UNIX-RECV:
nc
第二种情况有效,因为在这种情况下,您将丢失的
-u
标志添加到nc
, 以便它和socat
正在使用数据报套接字。这与有代理无关。进一步阅读