gpt4 book ai didi

python - 在用 C 编写的服务器和用 python 编写的客户端之间通过 unix 域套接字进行通信

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:26 25 4
gpt4 key购买 nike

我正在尝试通过 unix 域套接字在用 C 编写的服务器和用 Python 编写的客户端之间发送/接收数据。当我尝试解压缩接收到的数据时出现此错误。

struct.error: unpack str size does not match format

client = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
client.connect("/tmp/udfile")
Msg = struct.pack('I I 64s I 64s I 2048s', 1, 2, "SAMPLE1", 0, "SAMPLE2", 0, "SAMPLE3")
client.sendall(Msg)
Reply = client.recv(2192)
opcode, atype, btype, ctype, dtype, ftype, etype = struct.unpack('I I 64s I 64s I 2048s', Reply)

首先想知道这是否可能。如果是,我缺少什么。

最佳答案

这里的线索是SOCK_STREAM流式传输。您有与其他程序的 连接。不保证消息边界。您克服了第一个障碍 - 您使用了 sendall 而不是 send。不过,你没有通过第二个。 recv(N) 不保证返回 N 字节。它将返回最多 N 个字节。由于 struct.unpack 需要恰好 2192 字节才能成功,因此您需要在循环中调用 recv 并将结果累积在缓冲区中,直到累积 2192 字节为止。然后你可以调用struct.unpack

关于python - 在用 C 编写的服务器和用 python 编写的客户端之间通过 unix 域套接字进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21552891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com