windows 管道故障
Out of order windows pipes
目前正在使用管道在进程之间进行通信,一个使用 C++,另一个使用 C# .NET 应用程序。我的 .NET 应用程序正在通过管道向我的 C++ 应用程序发送用户输入的长 lua 脚本。但是发送时,我的脚本全乱了。脚本块位于不同的位置。这很奇怪,因为我通过 1 个 ReadFile 调用读取了整个脚本。
我的 C# 端:
private void button1_Click(object sender, EventArgs e)
{
if (!connected)
return;
using (var pipe = new NamedPipeClientStream(".", "TestPipe", PipeDirection.Out))
using (var stream = new StreamWriter(pipe))
{
pipe.Connect();
stream.Write(TextBox.Text);
pipe.Flush();
}
}
我不会给出我从管道读取的整个 C++ 代码,但这是我定义管道的代码:
HANDLE Pipe = CreateNamedPipe("\\.\pipe\TestPipe",
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
999999,
999999,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
我是否遗漏了一些明显的东西导致写入我的管道变得半损坏?
非常感谢任何帮助!
PAGE_READMODE_BYTE 解决了我的问题。
目前正在使用管道在进程之间进行通信,一个使用 C++,另一个使用 C# .NET 应用程序。我的 .NET 应用程序正在通过管道向我的 C++ 应用程序发送用户输入的长 lua 脚本。但是发送时,我的脚本全乱了。脚本块位于不同的位置。这很奇怪,因为我通过 1 个 ReadFile 调用读取了整个脚本。
我的 C# 端:
private void button1_Click(object sender, EventArgs e)
{
if (!connected)
return;
using (var pipe = new NamedPipeClientStream(".", "TestPipe", PipeDirection.Out))
using (var stream = new StreamWriter(pipe))
{
pipe.Connect();
stream.Write(TextBox.Text);
pipe.Flush();
}
}
我不会给出我从管道读取的整个 C++ 代码,但这是我定义管道的代码:
HANDLE Pipe = CreateNamedPipe("\\.\pipe\TestPipe",
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
999999,
999999,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
我是否遗漏了一些明显的东西导致写入我的管道变得半损坏?
非常感谢任何帮助!
PAGE_READMODE_BYTE 解决了我的问题。