首页 > 解决方案 > Python unix 套接字不起作用?在这里找不到任何解释

问题描述

我正在运行通过 unix 套接字支持 IPC 控制的 mpv 播放器,它运行良好:

$ echo '{ "command": ["set_property", "pause", true ] }' | socat - /tmp/mpvsocket

{“request_id”:0,“错误”:“成功”}

现在我想从 python 脚本(Python 3.9)中得到同样的结果:

import os, sys
import socket
import errno

resp = ""
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect('/tmp/mpvsocket')
s.settimeout(2)

message = '{ "command": ["set_property", "pause", true] }'

s.send(message.encode())

try:
    msg = s.recv(4096)
    resp = msg.decode()
except OSError as e:
    # Something else happened, handle error, exit, etc.
    print("Error reciving reply from ipc sock:" + str(e.args[0]))
print(resp)

现在我得到了这个令人沮丧的事情:

从 ipc sock 接收回复时出错:超时

当然播放也没有暂停。

知道这里有什么问题吗?

标签: pythonnetworkingunix-socket

解决方案


@Selcuk 的评论是正确的。只需添加“\n”。


推荐阅读