进一步阅读

进一步阅读

我正在尝试调试为什么数据没有通过 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

然后通过netcatUDP 端口发送即可:

echo "Hello" | nc -u localhost 9988

我还能够让我的客户端应用程序将 UDP 写入代理,并且在写入 unix 套接字时失败的地方成功。

我想了解为什么socat没有收到由 写入的数据nc,但如果我通过 UDP 代理,则会收到数据。

使用亚马逊Linux 4.14.101-75.76.amzn1.x86_64

答案1

您已经设置了监听数据报带有socat+ 的套接字UNIX-RECV:并尝试通过溪流插座与nc.

第二种情况有效,因为在这种情况下,您将缺少的-u标志添加到nc,因此它和 都socat使用数据报套接字。这与有代理无关。

进一步阅读

相关内容