Windows在实践中命名管道
问题内容:
随着Windows命名管道,什么是使用正确的方法CreateNamedPipe
,ConnectNamedPipe
,DisconnectNamedPipe
,和CloseHandle
电话?
我正在制作一个连接到客户端应用程序的服务器应用程序,该客户端应用程序在一个会话中多次连接和断开与管道的连接。
当我写失败,因为客户端断开连接,我应该打电话DisconnectNamedPipe
,CloseHandle
或没有在我的把手。
然后,要接受新的连接,我应该先打电话给CreateNamedPipe
,然后再打电话ConnectNamedPipe
,还是给ConnectNamedPipe
?
我非常想解释这些调用导致管道处于不同状态的原因,因为我没有在其他地方找到它。
附加信息:
语言:使用Python win32pipe
,win32file
和win32api
图书馆。
管道设置:等待,无重叠,字节流。
问题答案:
我设法实现了我想要的。我打电话CreateNamedPipe
和CloseHandle
每节只有一次,我打电话DisconnectNamedPipe
时,我写失败,紧接着又ConnectNamedPipe
。
诀窍是仅DisconnectNamedPipe
在实际连接管道时调用。每当我尝试“确定”连接时,我都会调用它,这给了我奇怪的错误。
有关管道的更多信息,另请参见djgandy的答案。