3 Stimmen

Wie kann eine benannte Leitung nicht besetzt werden, nachdem der Client die Verbindung getrennt hat?

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 Fehler ERROR_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 es ERROR_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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X