通过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将数据放入管道.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |