2010-10-18 6 views
5

Ich sehe mir ein Projekt an, das die Kommunikation zwischen einer alten Windows-Anwendung mit Named Pipes und einem neuen Dienst auf einem Linux-Server erfordert. Die Windows-Anwendung kann nicht geändert werden. Weiß jemand, ob es eine Linux-Bibliothek gibt, die Windows Named Pipes unterstützt? Oder noch besser, kann jemand eine Bibliothek empfehlen, die sie für diesen Zweck verwendet haben?Unterstützung für Windows-Named Pipes in Linux

+0

Eine Pipe ist ein lokales Kommunikationssystem, sie erweitert sich nicht auf Netzwerke ... Wie sollte also ein Linux-System Zugang zu einer Pipe auf einem Windows-System erhalten, das definitionsgemäß ein anderes System (sogar eine VM) sein muss? Oder möchten Sie wissen, wie man einen Proxy oder etwas Ähnliches schreibt? – DarkDust

+3

@DarkDust: Windows Named Pipes werden über den Netzwerknamenraum exportiert. Sie können eine von einer anderen Windows-Maschine mit den korrekten Sicherheitsattributen öffnen und den Pipe-Namen mit dem WINS-Namen voranstellen. –

+0

Windows benannte Pipes funktionieren anders als die Standard-Linux-Pipes und funktionieren über ein Netzwerk hinweg. Ich frage, ob jemand eine Bibliothek in Linux geschrieben hat, um Windows Named Pipes zu unterstützen. – MichaelB76

Antwort

12

Windows und Linux Named Pipes sind verschiedene Tiere. Wenn eine Interop-Lösung existiert, gehören Sie zu einer sehr kleinen Anzahl von Benutzern.

Sie könnten besser einen Proxy auf der Windows-Seite schreiben, um zwischen Named Pipe und Socket zu mappen und dies mit einem Socket auf dem Linux-Ende zu verbinden. Dies bietet Ihnen eine nützliche Netzwerkschnittstelle auf der Linux-Seite, die vorwärts geht, und entfernt, was möglicherweise eine Welt von Named Pipes-Interop-Verletzungen vom Bild sein könnte.

Wenn ich dies tat, würde ich versuchen, einen einfachen Passthrough-Proxy in C# (Managed Code) als ein Beweis des Konzepts zu produzieren. Kann immer in nativen Code (Win32/C++) konvertiert werden, wenn der Durchsatz nicht ausreicht. Es gibt einige Beispiel-C# -Code here, die eine nützliche Referenz sein können.

Hier ist background on the nuances of Windows vs Linux named pipes.

+0

Danke. die Idee, einen Proxy auf der Windows-Seite zu schreiben, war mir eingefallen, aber ich stoße auf die Idee, alles auf dem Windows-Server zu installieren ... – MichaelB76

+1

@ MichaelB76 - wie frustrierend ... hoffentlich eine gut argumentierte Präsentation von Risiken und Kosten bei NP Interop können das Argument für Sie schwingen. Was ist das Windows Betriebssystem? Eine Maschine oder viele? –

3

Ich wette, Samba/Winbind enthält sehr relevanten Code. Nicht sicher, wie wiederverwendbar es ist.

+1

Ich denke, die Samba-Suite enthält etwas Nützliches; nicht sicher, wie man es benutzt. Einige der Samba-Tools müssen intern mit NT-Named Pipes verbunden sein. – MarkR

+0

Danke, interessanter Gedanke. – MichaelB76