gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:20 30 4
gpt4 key购买 nike

我有一个(我认为)相对简单的任务。我必须向某些 C# 应用程序提供一种方法来调用我的 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 将数据放入管道。

关于c# - 通过 C# 和 cPython 之间的管道交换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4138124/

30 4 0
文章推荐: python - 使用子进程模块从 python 启动 jython 程序?
文章推荐: c# - c#中的数据表到XML,其中一些项目是列表