【发布时间】:2013-01-25 10:35:48
【问题描述】:
我正在开发一个服务器(用 Python 实现)客户端(用 C 实现)应用程序。 我想使用服务器端的 struct 模块(Python)解压缩从 C 客户端接收到的原始字节。
我的 C 结构(来自 C 客户端):
typedef struct lokesh{
int command;
union
{
struct{
int data[100];
int ttl[100];
};
struct{
char config[256];
};
};
} mystructdata;
在服务器端解包(Python):-
import struct
data,address=socket.recvfrom(1024)
result=struct.unpack('<i 2048s',data)
print(result[0])
但我遇到了一个错误:-
struct.error: unpack require object of size 2052
我认为问题出在我的 unpack 方法的格式字符串 '<i 2048s' 参数中。
编辑:-
现在,我已将格式字符串
'<i 2048s'替换为格式字符串'<i 256s'
【问题讨论】:
-
为什么没有任何一种(至少是半)标准化的通信格式适合您的问题?有一个 Google 的 Protocol Buffers - 它非常有效,并且有许多语言的库......
-
我的控制只在服务器端..即解包/解码,不能在客户端做任何事情。
标签: python c sockets struct python-3.x