Ich verwende eine benannte Pipe und möchte dieselbe Pipe auf dem Server wiederverwenden, um eine Verbindung mit einem anderen Client herzustellen, nachdem der ursprüngliche Client die Verbindung getrennt hat. Was ich tue ist:
- Server erstellt eine Pipe mit
CreateNamedPipe
- Server schreibt Daten mit
WriteFile
und versucht dies so lange, bis der FehlerERROR_PIPE_LISTENING
zurückgegeben wird (bevor ein Client verbunden ist) - Clients verbindet sich über
CreateFile
- Kunde liest Daten
- Client schließen Rohrgriff mit
CloseHandle
- An diesem Punkt erhält der Server einen Fehler
ERROR_NO_DATA
wenn er versucht, weitere Daten zu schreiben - Server trennt die Verbindung mit
DisconnectNamedPipe
die, wie ich hoffte, wieder frei werden sollte - Server versucht, Daten zu schreiben, erhält Fehler
ERROR_PIPE_NOT_CONNECTED
wird der Vorgang so lange wiederholt, bis kein Fehler mehr auftritt. - Wenn jedoch ein neuer Client eine Verbindung herstellt und versucht
CreateFile
auf dem Rohr, wird esERROR_PIPE_BUSY
Daher lautet meine Frage: Welche weiteren Schritte muss ich unternehmen, um den Client ordnungsgemäß von der Leitung zu trennen, damit ein neuer Client eine Verbindung herstellen kann?