【发布时间】:2011-05-07 11:47:20
【问题描述】:
我有什么(我认为)是一个相对简单的任务。我必须为某些 C# 应用程序提供一种方法来调用我的 Python 应用程序并传递一些数据以进行处理并在 Python 任务结束时接收回结果(两者都是 GUI 应用程序。
我认为在 C# 端创建命名管道时,管道可以很好地完成这项工作
using (NamedPipeServerStream pipeServer =
new NamedPipeServerStream("Demo", PipeDirection.InOut))
{// Wait for a client to connect
pipeServer.WaitForConnection();
应用程序可以 p/invoke python 应用程序传递 sysarg 中的管道名称等。
在 python 方面,一旦知道管道名称并使用 win32pipe 之类的东西
message = 'a test'
pipeName = '\\\\.\\pipe\\Demo'
win32pipe.CallNamedPipe(pipeName, message, 4096 , win32pipe.NMPWAIT_WAIT_FOREVER)
应该可以。
发生的情况是 C# 检测到传入连接,但 python 端“崩溃”了一个臭名昭著的错误:(87,'CallNmaedPipe",'The parameter is wrong')。
我不是管道方面的专家,不知道这里可能出了什么问题。
【问题讨论】: