none
Kommunikation zwischen 2 LAUFENDEN Anwendungen RRS feed

  • Frage

  • Hallo ich würde gerne wissen ob es eine effektivere Methode gibt, Daten zwischen 2 LAUFENDEN Anwendungen auszutauschen, als mit Text-Dateien? Habe schon gegoogelt aber immer nur etwas mit Startparametern gefunden :/

    Vlt. könnt ihr mir ja weiter helfen.

    Lg Niklas


    Freitag, 10. Juli 2015 00:54

Antworten

  • Welche Technik hast du jetzt verwendet?

    Zum server: du must verhindern, dass der Serverprozess sofort endet.

    Ich nenne dir mal ein Beispiel:

    //
    // Beachte TCPClient und TCPListener, welche Sockets verwalten.
    // Siehe auch hier: https://msdn.microsoft.com/de-de/library/System.Net.Sockets.TcpListener(v=vs.110).aspx
    //
    
    void __StartServer() {
        IPAddress ipAddress = IPAddress.Any; // Loopback
        // Im TRY-Block arbeiten
        try {
            TcpListener tcpListener =  new TcpListener(ipAddress, 8080);
            // Der Server lauscht auf localhost:8080
            tcpListener.Start();
    
            while(_isActive) { // Endlosschleife, _isdActive muss false sein zum abbrechen der Anwedung.
                  var cl = tcpListener.AcceptTcpClient();
                  // Die Anfrage Im Hintegrund (Extra-Thread) abarbeiten.
                  var newThread = new Thread(__ServerTask);
                  newThread.Start(cl);
            }    
        }
        catch (Exception e){
            Console.WriteLine( e.ToString());
        }
    
    }
    
    static void __ServerTask(TcpClient cl) {
        // Hier kannstud Receive und Send zum übertragen verwenden.
        // Schau dir einfach die Methoden von TcpClient an.
    }


    © 2015 Thomas Roskop
    Germany //  Deutschland

    Sonntag, 12. Juli 2015 16:52
  • Hi,
    auf meiner Homepage steht ein Programm für einen bilateralen Chat in VB.NET mit Sockets unter Tipp 318. Vielleicht kann es Dir als Anregung dienen. Unter Tipp 355 findest Du ein Beispiel mit NamedPipes.

    Um Dir besser weiter zu helfen, wäre eine kleine Anforderungsbeschreibung sinnvoll, z.B. wie sieht das Netzwerk aus, welche Technologie soll eingesetzt werden, wie groß sind die Datenmengen usw.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Montag, 13. Juli 2015 04:07

Alle Antworten

  • Da gib es unter Windows viele Möglichkeiten,

    du könntest mit Sockets arbeiten, und der eine diehnt am Anfang als Server der andere als Client. Die Daten lönne in beide Richtungen gesendet werden.

    noch einfacher währen sgenannte Pipes:


    © 2015 Thomas Roskop
    Germany //  Deutschland

    Freitag, 10. Juli 2015 05:43
  • Hi Niklas,
    die Art des Datenaustausches beeinflusst auch die möglichen Technologien. NamedPipes ist sehr schnell, aber nur, wenn beide Programmen im gleichen Betriebssystem/Rechner laufen. Sickets sind sehr flexibel, wenn die Programme im gleichen Betriebssystem/Rechner oder auch in unterschiedlichen Betriebssystemen/Rechner laufen. Eine weitere Alternative wäre Remoting oder allgemeiner auch WCF. Das setzt aber installierte Funktionen voraus, die ggf. nicht vorliegen.

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Freitag, 10. Juli 2015 07:35
  • Hallo ich würde gerne wissen ob es eine effektivere Methode gibt, Daten zwischen 2 LAUFENDEN Anwendungen auszutauschen, als mit Text-Dateien? Habe schon gegoogelt aber immer nur etwas mit Startparametern gefunden :/

    Vlt. könnt ihr mir ja weiter helfen.

    Lg Niklas

    Hallo,

    Dies wäre eine möglichkeit: Shared Memory Inter Process Communication (IPC)

    Freitag, 10. Juli 2015 13:37
  • Ok vielen Dank euch allen ich werde mir die Methoden mal genauer angucken.
    Freitag, 10. Juli 2015 16:37
  • Hey,

    vielen Dank für deine Antwort, ich habe mal einen test Server und einen test Client erstellt aber iwi. klappt das nicht bei mir :/ Der client geht sofort wieder aus und der Server gibt den Text den ich eingebe selber aus. Tut mir leid das ich mich so dumm anstelle :) könntest du mir vlt ein Code Bsp. geben? ich möchte es einfach nur schaffen mindestens Strings zwischen den beiden Clients/Servern auszutauschen (vlt auch noch Arrays oder Listen).

    Sonntag, 12. Juli 2015 16:01
  • Welche Technik hast du jetzt verwendet?

    Zum server: du must verhindern, dass der Serverprozess sofort endet.

    Ich nenne dir mal ein Beispiel:

    //
    // Beachte TCPClient und TCPListener, welche Sockets verwalten.
    // Siehe auch hier: https://msdn.microsoft.com/de-de/library/System.Net.Sockets.TcpListener(v=vs.110).aspx
    //
    
    void __StartServer() {
        IPAddress ipAddress = IPAddress.Any; // Loopback
        // Im TRY-Block arbeiten
        try {
            TcpListener tcpListener =  new TcpListener(ipAddress, 8080);
            // Der Server lauscht auf localhost:8080
            tcpListener.Start();
    
            while(_isActive) { // Endlosschleife, _isdActive muss false sein zum abbrechen der Anwedung.
                  var cl = tcpListener.AcceptTcpClient();
                  // Die Anfrage Im Hintegrund (Extra-Thread) abarbeiten.
                  var newThread = new Thread(__ServerTask);
                  newThread.Start(cl);
            }    
        }
        catch (Exception e){
            Console.WriteLine( e.ToString());
        }
    
    }
    
    static void __ServerTask(TcpClient cl) {
        // Hier kannstud Receive und Send zum übertragen verwenden.
        // Schau dir einfach die Methoden von TcpClient an.
    }


    © 2015 Thomas Roskop
    Germany //  Deutschland

    Sonntag, 12. Juli 2015 16:52
  • Hi,
    auf meiner Homepage steht ein Programm für einen bilateralen Chat in VB.NET mit Sockets unter Tipp 318. Vielleicht kann es Dir als Anregung dienen. Unter Tipp 355 findest Du ein Beispiel mit NamedPipes.

    Um Dir besser weiter zu helfen, wäre eine kleine Anforderungsbeschreibung sinnvoll, z.B. wie sieht das Netzwerk aus, welche Technologie soll eingesetzt werden, wie groß sind die Datenmengen usw.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks

    Montag, 13. Juli 2015 04:07
  • Hey,

    vielen Dank für deine Antwort, ich habe mal einen test Server und einen test Client erstellt aber iwi. klappt das nicht bei mir :/ Der client geht sofort wieder aus und der Server gibt den Text den ich eingebe selber aus. Tut mir leid das ich mich so dumm anstelle :) könntest du mir vlt ein Code Bsp. geben? ich möchte es einfach nur schaffen mindestens Strings zwischen den beiden Clients/Servern auszutauschen (vlt auch noch Arrays oder Listen).

    Hallo,

    Beispielcode findest du auch unter dem Link oder direkt hier
    (Shared Memory Inter Process Communication (IPC)).
    Beachte aber, das diese Methode nur funktioniert, wenn beide Programme auf dem selben Rechner laufen.

    MFG



    Montag, 13. Juli 2015 10:54
  • Hallo Niklas,

    wurde deine Frage beantwortet, bist du weitergekommen?


    © 2015 Thomas Roskop
    Germany //  Deutschland

    Freitag, 17. Juli 2015 19:20