NamedPipeClientStream C ++中的StreamReader问题

时间:2009-11-03 14:26:39

标签: .net visual-c++ named-pipes streamreader

当使用.net NamedPipeClientStream 类从NamedPipes服务器读取时,我只能获取C ++中第一次读取的数据,每次它只是一个空字符串。在c#中,它每次都有效。

pipeClient = gcnew NamedPipeClientStream(".", "Server_OUT", PipeDirection::In);

try
{
    pipeClient->Connect();
}
catch(TimeoutException^ e)
{
    // swallow
}

StreamReader^ sr = gcnew StreamReader(pipeClient);
String^ temp;
while (temp = sr->ReadLine())
{
    // = sr->ReadLine();
    Console::WriteLine("Received from server: {0}", temp);
}
sr->Close();

1 个答案:

答案 0 :(得分:0)

问题与C ++ null终止符有关。 NamedPipes服务器正在发送例如

“Hello World!\ n \ 0”

在第一遍中,这将发送

“Hello World!\ n”在管道中留下 \ 0 。在子项上发送它将传输

“\ 0Hello World!\ n”

C#将获得整个字符串,而c ++将终止字符串 \ 0 char。