Kommunikation über named pipe in einer Windows Arbeitsgruppe

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von hose63de.

    Kommunikation über named pipe in einer Windows Arbeitsgruppe

    Hallo zusammen,
    ich habe auf einem PC einen Dienst laufen, der über eine 'named pipe' angesprochen werden kann.
    In einer Windows-Domänen Umgebung funktioniert die Kommunikation von allen PCs einwandfrei mit dem Dienst.
    Leider komme ich in einer Arbeitsgruppe nur von einem anderen PC an den Dienst heran, wenn der Benutzer des anfragenden PCs auch als Benutzer auf dem PC mit dem Dienst angelegt ist. Muss man in einer Arbeitsgruppe mit 'WindowsIdentity.Impersonate' dem aufrufenden Prozess eine andere Identität geben?
    Oder fehlt auf den einzelnen PCs ein entsprechendes Loch in der Firewall?

    Hintergrund: Der Dienst kann auf Anfrage von Clients gesperrte Dateien an einem anderen PC anzeigen, den Status der Datensicherung abfragen oder den Status verfügbarer Updates anzeigen, bzw. das Einspielen der Updates remote aktivieren.

    Grüße HoSe
    @hose63de Willkommen im Forum. :thumbup:
    Eine solch Kommunikation erfolgt bidirektional (jeweils ein Server und ein Client):

    Quellcode

    1. PC1 sendet eine Anfrage an PC2 (Client => Server).
    2. PC2 sendet die Antwort an PC1 (Client => Server).
    Wenn beide Kommunikationsrichtungen in diesem Dienst implementiert sind, müssen zunächst alle Teinehmen-Woller diesen Dienst laufen haben.
    Wenn der fragende Client vom angesprochenen Server keine Antwort bekommt, sollte da eine entsprechende Fehlermeldung generiert werden, z.B. ein TimeOut.
    Ob die TCP-Verbindung zwischen beiden Rechnern ühaupt funktioniert, ermittelst Du mit dem Befehl (natürlich mit der korrekten IP) in der Commando-Console:
    Ping 123.234.34.45
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Beispiel und Bild zu den Named Pipes

    Hallo RodFromGermany,
    ich habe mal mein Test-Projekt und eine Hardcopy angehängt.

    Erklärung zum Programm.
    Wenn man beim NamedPipe_Server auf "Start" klickt, dann wartet das Programm auf einer Pipe.

    Beim NamedPipe_Client kann man die IP des Server-PCs eingeben, anschließend einen Text bei "Nachricht". Beim Klick auf Button1 wird gesendet.
    Der PipeServer sendet den String einfach nur zurück.


    Zur Hardcopy:
    Das Server-Programm und das Client-Programm sind beide auf einem PC mit IP 10.20.30.121 gestartet - Datenaustausch funktioniert.
    Versuche ich mit dem Client-Programm vom PC mit der IP 10.20.117.10 eine Verbindung, dann gib es die Fehlermeldung
    "Der Benutzername oder das Kennwort sind falsch".

    Würde ich den aktuellen Benutzer von 10.20.117.10 auf dem PC 10.20.30.121 anlegen, könnte ich Daten austauschen.
    Bilder
    • Test.png

      262,57 kB, 1.269×992, 247 mal angesehen
    Dateien
    • NamedPipes.zip

      (201,51 kB, 245 mal heruntergeladen, zuletzt: )
    @hose63de Das ist wohl eine Frage des Namens des Clients.
    Wenn Du den lokalen Client mit "." startest, läuft es.
    Wenn Du den lokalen Client mit "123.234.11.22" oder "\\123.234.11.22" startest, kommt auch diese Fehlermeldung.
    Kläre lokal die erweiterte Syntax auf und Dein Problem sollte gelöst sein.
    ----------------
    Sorry, ich hab lokal den Namen verwendet: "Mein-PC" funktioniert,
    bei fern "Dein-PC" knallt es. ;(
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Einspruch. Die Namensauflösung bzw. die Verbindung per IP funktioniert einwandfrei.

    Lege ich auf dem "Schulung-PC04" den Benutzer "HSeifert" an, kann ich von meinem PC kommunizieren.
    Deaktiviere ich das Konto, bekomme ich eine entsprechende Fehlermeldung.
    Lösche ich den Benutzer, kommt wieder die Meldung "Der Benutzername oder das Kennwort sind falsch".
    Bilder
    • Test_mit_deaktiviertem_User.png

      145,6 kB, 1.212×965, 253 mal angesehen
    • Test_mit_User.png

      134,04 kB, 1.217×969, 229 mal angesehen