在Python中将二进制数据写入命名管道

时间:2015-01-21 21:20:18

标签: python-2.7 pipe ctypes named

几个月前,我使用MSDN中的示例代码在GUI中实现了命名管道服务器 - > https://msdn.microsoft.com/en-us/library/bb546085

命名管道服务器似乎运行良好,我已经用它来控制我的GUI与其他用各种Visual Studio语言编写的程序。

今天我一直在尝试使用Python脚本与命名管道服务器进行交互。在网上,很容易找到使用ctypes库的示例python代码,它使用windll.kernel32.CreateFileA()方法打开命名管道,并使用windll.kernel32.WriteFile()方法将ASCII字节写入其中

问题是MSDN示例使用的格式是,从管道写入/接收的前两个字节表示管道中要跟随的字符串的大小。虽然我可以毫无问题地从Python中将字符串写入管道,但我似乎无法将任何二进制数据传递给WriteFile()方法。

有关解决此问题的方法的问题:   1.有没有办法将原始字节的二进制数据写入WriteFile()?有没有其他方法我可以打电话来处理这个?   2.我有什么方法可以将二进制数编码为字符串作为原始字节?例如,如果我知道我想提前发送的字节(例如0x1234),那么我就可以发送create_string_buffer(" \ x12 \ x34")。但是,必须在运行时确定字节,并且我还没有找到一种方法来从原始字节中创建字符串。

0 个答案:

没有答案