Estou tentando depurar por que os dados não estão sendo enviados por um soquete de domínio Unix.
Eu tenho 2 aplicativos que deveriam estar se comunicando por um UDS, mas não estão.
Para testar fiz o seguinte:
Usando socat
, eu escuto em um soquete como este:
socat -x -u UNIX-RECV:/tmp/dd.sock STDOUT
e usando netcat para enviar dados como este:
echo "hello" | nc -U -w1 /tmp/dd.sock
nada acontece.
Mas se eu também configurar o socat como um proxy, para ouvir uma porta UDP e escrever isso no soquete assim:
socat -s -u UDP-RECV:9988 UNIX-SENDTO:/tmp/dd.sock
Em seguida, enviar via netcat
para a porta UDP funciona:
echo "Hello" | nc -u localhost 9988
Também consegui fazer com que meu aplicativo cliente gravasse UDP no proxy e foi bem-sucedido onde não foi ao gravar no soquete unix.
Gostaria de entender por socat
que não recebe dados gravados nele por nc
, mas recebe se eu fizer proxy sobre UDP.
Uso do Amazon Linux 4.14.101-75.76.amzn1.x86_64
Você configurou um soquete de datagrama
socat
de escuta com +UNIX-RECV:
e está tentando se comunicar com ele por meio de um soquete de fluxonc
com .O segundo cenário funciona porque, nesse caso, você adicionou o
-u
sinalizador ausente anc
, para que ele esocat
estivesse empregando um soquete de datagrama. Não tinha nada a ver com a existência de um proxy.Leitura adicional