我在 python 和 Delphi 代码之间设置了基本的套接字通信(仅限文本)。现在我想发送/接收双方的数据记录。我有一个记录“C 兼容”,并且想来回传递记录,让它以 python 中可用的格式出现。
我在 python 中使用 conn.send("text") 来发送文本,但是如何使用 python 发送/接收缓冲区并访问在 python 中发送的记录项?
记录
TPacketData = record
pID : Integer;
dataType : Integer;
size : Integer;
value : Double;
end;
最佳答案
我对 python 了解不多,但我在 Delphi、C++、C# 和 Java 甚至 COBOL 之间做了很多工作。
无论如何,首先需要将记录从 Delphi 发送到 C在两端打包记录,
在德普利
MyRecord = pack record
在 C++ 中
#pragma pack(1)
我不知道在 python 中,但我想一定有类似的。确保两侧的 sizeof(MyRecord) 长度相同。
此外,在发送记录之前,您应该注意字节顺序(您知道,Little-Endian 与 Big-Endian),使用 Socket python 中的 .htonl() 和 Socket.ntohl() 以及 WinSock 单元中 Deplhi 中的等效项。 Delphi 中的“double”也不能与 python 中的相同,在 Delphi 中也是 8 字节,也检查一下,并将其更改为 Single(4 字节)或 Extended(10 字节),以匹配者为准。 如果所有匹配,那么您可以一次发送/接收二进制记录,否则,恐怕您必须一个接一个地发送各个字段。关于python - 通过套接字传递记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16926380/