加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:12:29 所属栏目:百科 来源:网络整理
导读:我有什么(我认为)是一个相对简单的任务.我必须为某些C#app提供一种方法来调用我的 Python应用程序并传递一些数据进行处理,并在Python任务结束时收回结果(两者都是GUI应用程序. 我认为管道可以很好地完成C#端创建命名管道 using (NamedPipeServerStream pipeS
我有什么(我认为)是一个相对简单的任务.我必须为某些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 = '\.pipeDemo'

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

应该管用.

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

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读