我有一个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将数据发送到本地文件套接字,我就可以解决剩下的问题。
Pythonsocket
库是一个相当薄的封装器,它围绕着您在C++中熟悉的套接字接口。请参阅套接字文档。
它看起来像这样:
import socket
import struct
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
s.connect('/tmp/...')
s.send(struct.pack('64s8i', ...))
您只需将AF_INET
更改为AF_UNIX
,然后.connect(address)
和/或.bind(address)
方法接受文件路径(而不是(host, port)
对)。除此之外,其他一切都差不多。