网络编程中,tcp/ip协议栈可以通过socket调用,应用层协议数据如果想通过socket发送接收,capl中会通过struct自定义协议头部和payload作为socket的数据
但是,python中没有struct类型数据结构,且python中的数据都是灵活的,并没有规定数据大小(占几个字节内存)和符号(首bit表示)
所以,首先要解决的是,如何在python中表示struct结构体,然后对结构体里的变量值进行打包,打包成固定长度的字节流(固定长度也是自己指定的),这样才好用套接字发送
结构体类型:
struct DefineMsg
{
word msgID; //message id
byte msgType; //message类型
dword msgLength; //payload长度
byte payload[1400]; //这里为什么不是payload[msgLength]呢?因为capl中定义list需要明确空间大小,所以往大了写
}; //这是声明结构体类型
struct DefineMsg defmsg; //这是定义一个这个结构体类型的对象,也就是此结构体类型的实例化
然后需要对结构体对象defmsg里的变量进行赋值操作:
int i;
defmsg.msgID = 0x0102;
defmsg.msgType = 0x03;
defmsg.msgLength = 0x04;
for(i=0; i<1400; i++)
{
defmsg.payload[i] = i;
} //既然定义了明确空间大小的list,初始化时全部赋值,使用时可以取自己想要的长度即可