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 Linux 4.14.101-75.76.amzn1.x86_64 사용
답변1
모니터링을 설정했습니다.데이터그램socat
+ 로 소켓을 연결 UNIX-RECV:
하고 전달을 시도합니다.개울소켓 nc
대.
두 번째 경우는 -u
누락된 플래그를 추가하여 nc
둘 다 socat
데이터그램 소켓을 사용하기 때문에 작동합니다. 대리인이 있는 것과는 아무런 관련이 없습니다.