我有一个 C++ 程序,它创建一个绑定(bind)到“/tmp/.mysocket”的本地套接字,并等待从该套接字接收数据。按照它的设置方式,原始二进制数据将被发送到套接字并加载到以下 C++ 结构中:
struct StateVariable
{
char Name[64];
int E[8];
};
C++ 程序使用 recvfrom 监听输入:
int nBytes = recvfrom(SD,&DataReceived,sizeof(StateVariable)/sizeof(char),0,(sockaddr*)&SentFrom,&size);
服务器只是使用标准的 AF_UNIX 和 SOCK_DGRAM 来创建套接字。
我的问题与 python 有关:如何使用 python 将数据发送到绑定(bind)到/tmp/.mysocket 的本地套接字?我没有使用 AF_INET 或为此打开特定端口。
我可以使用 python 的套接字库来描述套接字,但我找不到任何讨论将套接字绑定(bind)到 python 中的文件并将数据发送到该套接字的资源。套接字库的文档仅讨论将 AF_INET 和 SOCK_DGRAM 用于绑定(bind)到端口号 127.0.0.1 的本地套接字,但我没有那样做。
如何让 python 将数据发送到绑定(bind)到文件的套接字?是否有一个示例 python 程序可以做到这一点(也许是演示此功能的客户端/服务器对)?只要我能让 python 将数据发送到本地文件套接字,我就可以搞定其余部分。
最佳答案
Python socket
库是您熟悉的 C++ 套接字接口(interface)的一个相当薄的包装器。参见 socket documentation .
它看起来像这样:
import socket
import struct
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
s.connect('/tmp/...')
s.send(struct.pack('64s8i', ...))
关于python - 使用本地文件套接字的 Python 和 C++ 之间的进程间通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489700/