Asynchrone, bestätigte Punkt-zu-Punkt-Verbindung mit gSoap

9
___ qstnhdr ___ Asynchrone, bestätigte Punkt-zu-Punkt-Verbindung mit gSoap ___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123unix ___ Das Unix-Betriebssystem ist ein Allzweck-Betriebssystem, das von Bell Labs in den späten 1960er Jahren entwickelt wurde und heute in verschiedenen Versionen existiert. Wichtiger Hinweis: Dieses Tag dient ausschließlich zur Programmierung von Fragen, die direkt mit Unix zu tun haben; Allgemeine Softwareprobleme sollten an die Unix & Linux Stack Exchange-Site oder an Super User gerichtet werden. ___ answer16017093 ___

Ich habe es mit wsdl in meiner Frage implementiert. Das heißt: Implementieren Sie den Dienst (einen Listener) und verwenden Sie den Proxy (für das Senden von Anfragen) in beiden - dem Client und dem Server. Auf diese Weise habe ich Folgendes:

  1. Der Server ist aktiviert
  2. Der Client wird gestartet (startet einen Listener , a.k.a. "Dienst")
  3. Der Client sendet eine SOAP -Anfrage (mit proxy -Objekt) und teilt dem Server Folgendes mit: "Ich bin dran und an meinem Standort ist xxx " ( wsdl2h -o file.h file.wsdl ist der URI, mit dem der Server mit dem Listener des Clients verbunden wird)
  4. Die Server -Antworten mit SOAP Nachricht (ACK) (mit den Worten: "OK, ich sehe, dass Sie jetzt aufstehen" )
  5. Später sendet der Server SOAP-Anforderung (über proxy -Objekt) an den Client unter Verwendung des in der ersten Nachricht empfangenen Standorts; Diese Anfrage ist die echte Antwort der Anfrage, gesendet in soapcpp2 -Icorrect_path -j file.h Dies sagt - "OK, ich bin bereit, mit Ihnen zu kommunizieren"
  6. Der Client gibt Antwort auf diese Anfrage (ACK) zurück (mit den Worten: "OK, cool" )

Auf diese Weise kennen sowohl der Client als auch der Server den Standort des anderen, beide haben einen Listener (Implementierung des Service), beide Proxy-Objekte.

Scheint so, als würde das für mich funktionieren. Ich würde mich freuen, wenn mir jemand eine andere Möglichkeit geben würde oder etwas über soapXXXService.[h|cpp] in meiner Frage sagen würde.

BEARBEITEN: Nachdem ich mehrere Tage lang intensiv geforscht und eine tiefgreifende Analyse des Protokolls durchgeführt habe, habe ich festgestellt, dass dies der einzige Weg ist, dies zu tun:

  

Implementierungen MÜSSEN sowohl als SOAP-Client als auch als SOAP-Server funktionieren.

    
___ tag123gsoap ___ gSOAP ist ein Open-Source-C- und C ++ - Softwareentwicklungs-Toolkit für SOAP / XML-Webdienste und generische (nicht SOAP-) C / C ++ - XML-Datenbindungen. ___
Kiril Kirov 10.04.2013, 12:51
quelle

1 Antwort

2

Ich habe es mit option 2 in meiner Frage implementiert. Das heißt: Implementieren Sie den Dienst (einen Listener) und verwenden Sie den Proxy (für das Senden von Anfragen) in beiden - dem Client und dem Server. Auf diese Weise habe ich Folgendes:

  1. Der Server ist aktiviert
  2. Der Client wird gestartet (startet einen Listener , a.k.a. "Dienst")
  3. Der Client sendet eine SOAP -Anfrage (mit proxy -Objekt) und teilt dem Server Folgendes mit: "Ich bin dran und an meinem Standort ist xxx " ( xxx ist der URI, mit dem der Server mit dem Listener des Clients verbunden wird)
  4. Die Server -Antworten mit SOAP Nachricht (ACK) (mit den Worten: "OK, ich sehe, dass Sie jetzt aufstehen" )
  5. Später sendet der Server SOAP-Anforderung (über proxy -Objekt) an den Client unter Verwendung des in der ersten Nachricht empfangenen Standorts; Diese Anfrage ist die echte Antwort der Anfrage, gesendet in 3. Dies sagt - "OK, ich bin bereit, mit Ihnen zu kommunizieren"
  6. Der Client gibt Antwort auf diese Anfrage (ACK) zurück (mit den Worten: "OK, cool" )

Auf diese Weise kennen sowohl der Client als auch der Server den Standort des anderen, beide haben einen Listener (Implementierung des Service), beide Proxy-Objekte.

Scheint so, als würde das für mich funktionieren. Ich würde mich freuen, wenn mir jemand eine andere Möglichkeit geben würde oder etwas über option 1 in meiner Frage sagen würde.

BEARBEITEN: Nachdem ich mehrere Tage lang intensiv geforscht und eine tiefgreifende Analyse des Protokolls durchgeführt habe, habe ich festgestellt, dass dies der einzige Weg ist, dies zu tun:

  

Implementierungen MÜSSEN sowohl als SOAP-Client als auch als SOAP-Server funktionieren.

    
Kiril Kirov 15.04.2013, 13:57
quelle

Tags und Links