python - 使用本地文件套接字的 Python 和 C++ 之间的进程间通信?

标签 python c++ sockets ipc

我有一个 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/

相关文章:

c++ - C++ 中的迭代加深搜索

c - 服务器 - 同步 I/O 多路复用(套接字)

python - 如何对矩阵进行分箱

python - 使用 docker-compose up 运行时如何优雅地停止 Dockerized Python ROS2 节点?

python - 如何在discord.py中制作计时器命令?

python - 循环帮助: it doesn't wait for loadFinished SIGNAL in PyQt4

c++ - 用提升解释整数比较

c++ - 张量不会在超出范围的索引上抛出异常

sockets - 端口号和套接字的区别

node.js - 使用 Node.js、集群和 Socket.IO 的 HTML5 Canvas