命名管道 msdn 示例错误
Named pipes msdn sample faulty?
我完全使用了这个样本(除了我在任何地方都将 tchar 更改为 char): https://msdn.microsoft.com/en-us/library/windows/desktop/aa365601%28v=vs.85%29.aspx
我使用以下 c# 代码将中型 (=400kb) 文件发送到 c++ 服务器:
var client = new NamedPipeClientStream(@"SamplePipe");
client.Connect();
StreamWriter writer = new StreamWriter(client);
string bla = File.ReadAllText(@"D:Request.txt");
writer.Write(bla);
这是我发送的文件: http://www.gutenberg.org/cache/epub/45745/pg45745.txt
它从未发送过这段话以外的数据:"我们站得像一个高个子一样高,从喙到尾巴有四英尺。星期四"(大约 170kb 的 400kb)(我不明白"你的"从何而来,下一个词是"那里")
据我所知,发生的最后一件事是WAIT_IO_COMPLETION,然后它永远停留在writer.Write(bla)
线上。但这可能是间接的。这是怎么回事?我也尝试了其他一些示例,它们似乎都存在较大文件的问题。
我想我想通了:
C++示例将PipeTransmissionMode
设置为 'Message'
(PIPE_TYPE_MESSAGE
和 PIPE_READMODE_MESSAGE
),而 C# NamedPipeClientStream
默认使用该PipeTransmissionMode 'Byte'
。
所以把PIPE_TYPE_MESSAGE
改成PIPE_TYPE_BYTE
,PIPE_READMODE_MESSAGE
改成PIPE_READMODE_BYTE
.
有关详细信息,请查看 MSDN 上的此 CreateNamedPipe 函数页,以确保正确设置管道服务器。
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- 命名管道 msdn 示例错误
- 删除注册表项 - MSDN 示例中出现错误
- 来自 MSDN C++ 示例的 LDAP "The search filter is bad."错误
- 这是错误的在MSDN文档