python - 通过套接字传递记录

标签 python delphi sockets

我在 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/

相关文章:

php - 网络游戏如何将玩家联系在一起?

ios - iOS 中的 Apple 推送通知 (APN) 服务服务器端 Python 2 脚本

java - 检查服务器是否正常启动

python - 虚拟数据包字段 : how to handle a polymorphic protocole?

python - 在python中实时播放原始音频文件

html - 如何通过Delphi 7通过Outlook发送带有表格的电子邮件

delphi - Delphi Berlin试用版是MacOSX和iOS版还是入门版?

python - 导入模块中包含的类

Python numpy 数组——关闭最小区域

multithreading - Delphi访问线程变量