Wie man eine named pipe nicht beschäftigt, nach der client getrennt wurde?

Ich eine named pipe, und ich will die Wiederverwendung der gleichen Leitung auf dem server, ermöglicht den Anschluss von einem anderen client, wenn der ursprüngliche client getrennt wurde. Was ich mache ist:

  • erstellt der server eine pipe mit CreateNamedPipe
  • server schreibt Daten mittels WriteFile, und wiederholt dies zu tun, solange Fehler ERROR_PIPE_LISTENING zurückgegeben wird (das ist vor jeder client verbunden ist)
  • - clients eine Verbindung über CreateFile
  • - client liest Daten
  • client schließen Rohr Griff mit CloseHandle
  • an dieser Stelle-server wird Fehler ERROR_NO_DATA wenn es versucht, weitere Daten zu schreiben
  • server trennt die Verbindung zwischen dem Rohr mit DisconnectNamedPipe, die ich hoffte, Sie sollte es wieder frei
  • server versucht, die Daten schreiben, wird Fehler ERROR_PIPE_NOT_CONNECTED, wiederholt es dies zu tun, bis es keine Fehler
  • jedoch, wenn ein neuer client eine Verbindung herstellt und versucht CreateFile auf das Rohr, wird es ERROR_PIPE_BUSY

Daher meine Frage: welche anderen Schritte, die ich tun müssen, um zu trennen-client aus dem Rohr richtig so, dass ein neuer client eine Verbindung herstellen kann?

InformationsquelleAutor Suma | 2009-07-28
Schreibe einen Kommentar