我有一个c ++程序,它创建一个绑定到“/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将数据发送到绑定到/tmp/.mysocket的本地套接字?我没有使用AF_INET或为此打开一个特定的端口。
我可以使用python的套接字库来描述套接字,但我找不到任何讨论将套接字绑定到python中的文件并将数据发送到该套接字的资源。套接字库的文档仅讨论使用AF_INET和SOCK_DGRAM来绑定端口号为127.0.0.1的本地套接字,但我不这样做。
如何让python将数据发送到绑定到文件的套接字?是否有一个示例python程序(可能是一个演示此功能的客户端/服务器对)?只要我能让python将数据发送到本地文件套接字,我就可以搞清楚其余部分。
答案 0 :(得分:2)
Python socket
库是一个相当薄的包装器,它是您熟悉的C ++套接字接口。请参阅socket documentation。
它看起来像这样:
import socket
import struct
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
s.connect('/tmp/...')
s.send(struct.pack('64s8i', ...))
答案 1 :(得分:0)
您只需将AF_INET
更改为AF_UNIX
,然后.connect(address)
和/或.bind(address)
方法接受文件路径(而不是(host, port)
对)。除此之外,其他一切工作都非常相似。