socket 为什么不能用传统命令访问?
socket 文件不能通过普通的文件读写命令操作 (比如说 echo "xxx"> socket.file) 它. 因为它是在网络上面工作的. 只能通过 socket 读写函数去操作它.
socat 和 ncat 命令
其实通过的 Linux 命令 socat 和 ncat 可以去操作 socket.
其中 - U 指定了该文件是 Unix 域 socket 文件类型, ncat 实现了类似于 cat 命令的访问 unix socket.
ncat -U /tmp/tbsocket1
ncat 也可以通过映射 socket 文件到监听的端口上. 那么通过 curl 可以发送请求到该监听端口, 实现写操作.
- # 映射 tcp 的 8080 流量到 unix socket
- ncat -vlk 8080 -c 'ncat -U /tmp/tbsocket1'
- # 通过 curl 发起 http 请求访问
- curl http://localhost:8080
也可以使用功能更强大的 socat 来实现.
- # 映射 8080/tcp 到 unix socket
- socat -d -d TCP-LISTEN:8080,fork UNIX:/tmp/tbsocket1
来源: https://www.qcloud.com/developer/article/1342726