データがUnixドメインソケットを介して送信されない理由をデバッグしようとしています。
UDSを介して通信する必要があるアプリケーションが2つありますが、そうではありません。
テストするために、私は次のことを行いました。
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 Linux4.14.101-75.76.amzn1.x86_64の使用
socat
+ UNIX-RECV:
を使用してリスニングdatagramソケットを設定し、streamソケットとnc
。
2番目のシナリオが機能するのは、その場合、欠落している-u
フラグをnc
に追加し、それとsocat
の両方がデータグラムソケットを使用していたためです。プロキシがあることとは何の関係もありませんでした。