使用 golang 将 JSON 发送到 unix 套接字
Send JSON to a unix socket with golang
我正在尝试编写一个 golang 程序来通过向位于 /tmp/mpvsocket
的 unix 套接字 运行 发出命令来控制 mpv
。
这是我目前尝试过的方法:
func main() {
c, err := net.Dial("unix", "/tmp/mpvsocket")
if err != nil {
panic(err)
}
defer c.Close()
_, err = c.Write([]byte(`{"command":["quit"]}`))
if err != nil {
log.Fatal("write error:", err)
}
}
这应该会导致 mpv 退出,但没有任何反应。
可以通过命令行发出此命令以获得预期结果:
echo '{ "command": ["quit"] }' | socat - /tmp/mpvsocket
它使用socat
将JSON 发送到套接字。如何使用 Golang 将其发送到套接字?
感谢@AndySchweig 在上面的评论中,我需要在 JSON 之后换行。
固定线路:
_, err = c.Write([]byte(`{"command":["quit"]}` + "\n"))
完整的固定代码块:
func main() {
c, err := net.Dial("unix", "/tmp/mpvsocket")
if err != nil {
panic(err)
}
defer c.Close()
_, err = c.Write([]byte(`{"command":["quit"]}` + "\n"))
if err != nil {
log.Fatal("write error:", err)
}
}
我正在尝试编写一个 golang 程序来通过向位于 /tmp/mpvsocket
的 unix 套接字 运行 发出命令来控制 mpv
。
这是我目前尝试过的方法:
func main() {
c, err := net.Dial("unix", "/tmp/mpvsocket")
if err != nil {
panic(err)
}
defer c.Close()
_, err = c.Write([]byte(`{"command":["quit"]}`))
if err != nil {
log.Fatal("write error:", err)
}
}
这应该会导致 mpv 退出,但没有任何反应。
可以通过命令行发出此命令以获得预期结果:
echo '{ "command": ["quit"] }' | socat - /tmp/mpvsocket
它使用socat
将JSON 发送到套接字。如何使用 Golang 将其发送到套接字?
感谢@AndySchweig 在上面的评论中,我需要在 JSON 之后换行。
固定线路:
_, err = c.Write([]byte(`{"command":["quit"]}` + "\n"))
完整的固定代码块:
func main() {
c, err := net.Dial("unix", "/tmp/mpvsocket")
if err != nil {
panic(err)
}
defer c.Close()
_, err = c.Write([]byte(`{"command":["quit"]}` + "\n"))
if err != nil {
log.Fatal("write error:", err)
}
}