Angenommen, ein Server hat eine Named Pipe "myTestPipe" erstellt. Wie viele Clients können sich mit "myTestPipe" verbinden? Von dem was ich im Web gelesen habe, scheint es nur einen Client zu geben, wollte aber dafür sorgen.Anzahl der Clients, die eine Verbindung zu einer Named Pipe herstellen können
Wenn nur eine, dann ist es am besten, die Blockierung WaitForConnection() anstelle der Asunchronous-Methode BeginWaitForConnection() zu verwenden, da der Server wartet, bis ein Client-Prozess verbindet und dann die Kommunikation ?! (Sie müssen sich keine Sorgen über andere Clients machen, um eine Verbindung herzustellen)
Vielen Dank für Ihre Antwort. Ich habe jedoch eine Frage: Ich bin ein Server implementieren, der Binärdateien empfängt, die von NamedPipeClients über eine Named Pipe gesendet werden. Angenommen, ich habe einen NamedPipeClient mit mehreren Threads, in dem ich mehr als einen Thread instanziieren kann, um Dateien gleichzeitig zu senden. Wie wäre es möglich, dass der Server den Quellclient unterscheidet, der diese Bytes tatsächlich gesendet hat? Vielleicht sollte meine Frage sein: Wenn mehr als ein Client Daten in die Pipe schreibt, ist sie so mit anderen überlagert, dass man nicht sagen kann, wer was gesendet hat? hoffe, es ist gut erklärt! Nochmals vielen Dank – Derar
Es gibt tatsächlich ein paar verschiedene Optionen hier, einschließlich überlappende I/O, Multithreading oder Completion-Routinen. MSDN verfügt über eine gute Dokumentation (einschließlich aller 3 Optionen) zum Behandeln mehrerer Clientverbindungen von einem einzelnen Server hier: http://msdn.microsoft.com/en-us/library/aa365594%28VS.85%29.aspx –
Es ist wichtig Beachten Sie, dass eine einzelne Server-Pipe-Instanz nur einen einzigen Client verarbeiten kann. Ein bestimmtes _named pipe_ kann mehrere Verbindungen verarbeiten, aber auf diese Verbindungen muss immer noch gewartet und von einer separaten Server-Pipe-Instanz verarbeitet werden. Sobald eine Server-Pipe-Instanz eine Verbindung hergestellt hat, kann sie nicht für zusätzliche Verbindungen verwendet werden, bis die aktuelle Verbindung getrennt wurde und die Server-Pipe auf eine andere warten kann. Die obige Antwort stimmt mit den Fakten überein, macht sie jedoch aufgrund der Verwirrung zwischen einer Named Pipe und einem Server-Pipe-Objekt nicht klar. –