Socat
除非通過 UDP 使用 socat 代理,否則將數據發送到 Unix 套接字失敗
我正在嘗試調試為什麼不通過 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
正在使用數據報套接字。這與有代理無關。進一步閱讀