Hallo, ich möchte bzw. habe bereits ein Server <-> Client Protokoll erstellt mit dessen Hilfe sich 5 Clients mit dem Server jeweils über getrennte Named Pipes unterhalten können. Der Ablauf ist wie folgt: Der Server ist aktiv und wartet auf Anfragen eines Clients. Der Server hat 2 Funktionen: 1. Zuweisung der jeweils freien Pipe an den Clients nach seiner CONNECT-Anfrage 2. Kommunikation mit dem jeweiligen Client über den die im zugewiesene Pipe. D.h. stellt der Client eine Kontaktanfrage an den Server und erhält vom Server den PipeName über den zukünftig die Client-Server Kommunikation abläuft. Nun verbindet sich der Client mit der im zugesandten NamedPipe und tauscht hierüber Daten mit dem Server aus. Nachdem der Client geschlossen wird, hat der Server diese Pipe frei für die Verbindung mit dem nächsten Client usw. Soweit ist dieses Protokoll in 2 c# Applikationen umgesetzt. Auf einem Rechner funktioniert es zu 98% fehlerfrei, doch auf einem anderen PC leider nur zu 10%. Ich erhalte vom Server zwar noch den korrekten PipeNamen und der Client kann sich auch mit ihm verbinden, doch statt einer Antwort zum Server zu erhalten, bekomme ich nur die "Windows Meldung: Broken Pipe". Bei einer erneuten Serveranfrage erhalte ich wieder nur den Namen dieser defekten Pipe mit der ich mich nicht verbinden kann und somit funktioniert meine Applikation dann nicht mehr. Kann sich wer von euch vorstellen, wo hier der Fehler liegt und warum es auf einem Windows Rechner funktioniert und auf dem anderen nicht? Über ein paar Tipps wäre ich sehr dankbar!!
Weiß wer, warum ein Broken Pipe Fehler entsteht? Evtl. kann ich ja die Ursache dafür verhindern?
Martin schrieb: > D.h. stellt der Client eine Kontaktanfrage an den Server und erhält vom > Server den PipeName über den zukünftig die Client-Server Kommunikation > abläuft. Das ist bei named pipes nicht erforderlich. Ein Pipe-Server kann mehrere Instanzen einer Pipe mit einem Namen gleichzeitig bedienen, ganz so wie auch bei der Socket-Kommunikation ein Server auf einem Port mehrere Clients gleichzeitig bedienen kann.
OK, habe ich verstanden. Dennoch möchte ich nachvollziehen, warum ich einen Broken Pipe Error erhalte!
Weil irgendwas schiefgeht. Ohne Deinen Quelltext zu sehen --sowohl vom Client als auch vom Server-- lässt sich dazu mehr nicht sagen.
Martin schrieb: > über getrennte Named Pipes unterhalten können Named Pipes performen unter Windows so unterirdisch, dass man eigentlich immer TCP/IP benutzen will - zumal sich der Mehraufwand IMO in Grenzen hält. Man kann die Kommunikation auf den Host beschränken, wenn man als Listen address die "127.0.0.1" oder "::1" (IPv6) wählt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.