sockets - 使用 golang 将 JSON 发送到 unix 套接字

标签 sockets go network-programming unix-socket

我正在尝试编写一个 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)                
  }                                               
}                                     

关于sockets - 使用 golang 将 JSON 发送到 unix 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782004/

相关文章:

javascript - Emit() 给/namespace 中的每个人 - NodeJS、Socket.IO

java - 每次都必须声明 HttpUrlConnection 吗?

java - Socket OutputStream 上的 PrintWriter 导致数据损坏/丢失

Python 套接字 : how to only receive one message at a time

delphi - 在 Delphi 中进行异步套接字编程的惯用方法是什么?

c - 如何调试用 cgo 调用的 C 代码?

Golang 和并发/并行

go - 理解 golang 中的词法作用域

linux - 如何在网络上编写音频/视频应用程序?

c++ - 为什么无效套接字在 WinSock2.h (c++) 中定义为 ~0?