FAQ 0110: Wie können zwei Anwendungen ohne Winsock-Steuerelement kommunizieren?
von Helge Rex
Frage
Ich möchte zwei Anwendungen miteinander kommunizieren lassen. Wie kann ich das ohne Winsock-Steuerelement bewerkstelligen?
Antwort
Wenn man das Winsock-Steuerelement nicht verwenden möchte oder kann (weil die Lizenz dazu fehlt), hat man folgende Möglichkeiten:
Funktionen der ws2_32.dll (API-Funktionen)
In unseren ActiveVB - Tipps und Tricks [Tipp 0000] sind einige Tipps vorhanden, die diese Möglichkeit nutzen. Man könnte sich die jeweils benötigten Funktionen daraus kopieren.
Bei www.vbip.com gibt es jedoch die Klasse CSocket, die die Funktionen der DLL verwenden und das Winsock-Steuerelement weitgehend ersetzt.
Diese Klasse kann als PlugIn zur Laufzeit nachgeladen werden (siehe dazu Tutorial 2502: PlugIns erstellen), außerdem benötigt man keine Lizenz für die Klasse.Named Pipes
Named Pipes sind spezielle Dateien, die für den Datenaustausch zwischen zwei Anwendungen verwendet werden können. Die Kolumne 12: InterProzessKommunikation nennt ein paar Informationen dazu.
Ein Beispiel (in VB.NET) findet sich in der Microsoft Knowledge Base, dieses Beispiel läßt sich aber leicht nach VB konvertieren:
How to use named pipes for interprocess communication in Visual Basic .NET (Article ID 871044)MailSlots
Bei vb@rchiv gibt es einen Artikel, der erklärt, was MailSlots sind und wie man sie benutzt:
Mailslots - virtuelle EMail-PostfächerWM_COPYDATA
WM_COPYDATA ist eine Fensternachricht, die man verwenden kann, um Daten an andere Anwendungen auf dem gleichen System zu übergeben.
Siehe auch Daten zwischen Prozessen austauschen [Tipp 0337]Shared Memory
Bei Shared Memory handelt es sich um einen Speicherbereich, auf den mehrere Anwendungen, die alle auf dem gleichen System laufen, zugreifen können. Über diesen Speicherbereich kann man Daten austauschen.
Beispielprojekt (von Florian Rittmeier, modifiziert von Kai Liebenau).
Ihre Meinung
Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.