我已经实现了一个与多个命名管道客户端通信的命名管道服务器。通常它可以工作,但在某些情况下,客户端将无法从TransactNamedPipe获得有效结果。返回的GetLastError代码是998(无效的内存访问)。这很奇怪,因为我用于TransactNamedPipe的句柄在CreateFile中有效。
我已经实现了客户端在检测到错误时重试(除非管道服务器不活动)。对于其他错误代码(997,230,231),它可以正常工作。但是当它遇到错误代码998时,无论重试多少次,命名管道服务器都不响应;在命名管道服务器日志中,它只是说客户端已断开连接,但没有数据交换。
这背后的原因是什么?是因为客户端请求来自多个线程,而命名管道服务器无法处理(几乎)同时发出的请求?我还实现了“锁”以防止从客户端到命名管道服务器的同时请求,但错误仍然发生。
我在网上搜索过这个类似问题的命名管道通信,但到目前为止还没有结果。
提前致谢
答案 0 :(得分:0)