如何从 C(服务器)中收到的 python(客户端)“解包”数据包?
Posted
技术标签:
【中文标题】如何从 C(服务器)中收到的 python(客户端)“解包”数据包?【英文标题】:How to "unpack" packet from python (client) received in C (server)? 【发布时间】:2014-04-22 16:42:14 【问题描述】:我有一个 python 客户端来打包一些数据:
#MOUNT UDP PACKET (unsigned char type, 5 char ext, 50 char user)
pqtUDP = pack('B5s50s', REGISTER, ext, user)
现在我在 C 客户端上接收它,所以要读取正确的数据,我想我必须将其解压缩并将其保存在不同的变量中,不是吗?如何在 C 中做到这一点?
我需要从收到的数据中读取 REGISTER、ext 和 user。
【问题讨论】:
打包后就知道要写入的字节数,直接用c读... 你能举个例子更明确一点吗?我不知道该怎么做。谢谢老哥! 【参考方案1】:这样的东西应该在 C 中工作:
// assumes input packet is [const char* data]
unsigned char reg;
char ext[6];
char user[51];
reg = data[0];
memcpy(ext, data + 1, 5);
ext[5] = 0; // set null terminator
memcpy(user, data + 6, 50);
user[50] = 0; // set null terminator
【讨论】:
以上是关于如何从 C(服务器)中收到的 python(客户端)“解包”数据包?的主要内容,如果未能解决你的问题,请参考以下文章
Qt/C++ echo client + python echo server的问题(没有收到数据)
如何使 Syslog-ng 服务器在从客户端接收到的日志中显示设施、优先级?