微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过C#和cPython之间的管道交换数据

我有什么(我认为)是一个相对简单的任务.我必须为某些C#app提供一种方法调用我的 Python应用程序并传递一些数据进行处理,并在Python任务结束时收回结果(两者都是GUI应用程序.

我认为管道可以很好地完成C#端创建命名管道

using (NamedPipeServerStream pipeServer =
    new NamedPipeServerStream("Demo",PipeDirection.InOut))      

    {// Wait for a client to connect

         pipeServer.WaitForConnection();

该应用程序可以p /调用python应用程序传递sysarg等管道的名称.

在python方面,一旦管道名称已知并使用win32pipe之类的东西

message = 'a test'
pipeName = '\\\\.\\pipe\\Demo'

win32pipe.CallNamedPipe(pipeName,message,4096,win32pipe.NMPWAIT_WAIT_FOREVER)

应该管用.

会发生什么事情是C#检测到传入的连接,但是python端在一个臭名昭着的错误中“崩溃”:(87,’CallNmaedPipe’,’参数不正确’).

我不是管道方面的专家,我不知道这里可能有什么问题.

解决方法

CallNamedPipe需要在PIPE_TYPE_MESSAGE中创建的管道;您的C#代码在PIPE_TYPE_BYTE中创建管道.因此,您需要在C#中使用消息模式创建管道(使用需要PipeTransmissionMode的构造函数),或者使用WriteFile将数据放入管道.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐