TCP Socket

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Statler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 103
Registriert: Di, 22. Jan 2008 9:49
Wohnort: Aachen

TCP Socket

Beitrag von Statler » Mi, 06. Nov 2019 16:36

Hallo zusammen,

ich arbeite aktuell an einem MQTT (Message Broker) Projekt. Um die Clients zu testen, moechte ich mir eine kleine Testumgebung mittels Xbase bauen, welche mit dem MQTT Server kommuniziert und die von den Clients gelieferten Prozessdaten visualisiert.

Das ganze basiert auf TCP. Man etabliert einen TCP-Socket zu dem MQTT Server. Ueber diesen Socket koennen dann die MQTT Pakete gesendet bzw. empfangen werden.

Xbase bietet mit Bordmitteln eine Socket Toolsammlung an. SocketOpen (), SocketClose (), SocketRecv(), SocketSend() sind die Dinge, die man benoetigt.

Wie kann auf eine elegante Art und Weise ein Eventgesteuerter Listener realisiert werden, der immer dann angesprungen wird, wenn Daten ueber den Socket eintreffen. Via Timertick alle 50ms nachschauen ist nicht so schoen ...

Gruss

Achim

Benutzeravatar
andreas
Foren-Moderator
Foren-Moderator
Beiträge: 1796
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: TCP Socket

Beitrag von andreas » Do, 07. Nov 2019 11:22

Hallo Achim,

es gibt einen schönen Besipiel von Alaska für die socket-Benutzung, dass mit Xbase++ installiert wird!
Gruß,

Andreas
VIP der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Statler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 103
Registriert: Di, 22. Jan 2008 9:49
Wohnort: Aachen

Re: TCP Socket

Beitrag von Statler » Do, 07. Nov 2019 15:01

Hallo Andreas,

die Samples von 2.0 kann ich bei mir nicht finden. Ich habe die CD allerdings nicht installiert, sondern lediglich die Dateien in meine vorhandene Strukturen kopiert. Ich kann so mit eine Batch-Datei zwischen Umgebung 1.8/1.9/2.0 umschalten. Hin und wieder brauche ich die alte Umgebung noch. Die IDE setze ich nicht ein, ich arbeite mit Notepad++.

Frueher standen die Samples irgendwo unter Resourcen, jetzt nicht mehr.

Vielleicht kann mir mal jemand die paar Zeilen, wo der Port abgehoert wird, kopieren.

Gruss

Achim

Benutzeravatar
Schubi
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 133
Registriert: Mi, 05. Okt 2005 15:10
Wohnort: Wiesloch

Re: TCP Socket

Beitrag von Schubi » Do, 07. Nov 2019 16:57

Hallo Achim,

die Alaska Samples findest du nicht im Alaska-Programm-Ordner, sondern unter
c:\Users\<dein_username>\Documents\Xbase++\source\samples

Ich such mich auch jedesmal zu Tode :)
Grüße Steffen

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7765
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: TCP Socket

Beitrag von Tom » Do, 07. Nov 2019 17:31

@Steffen: Da sucht man sich quasi zum Zombie, wenn man, wie Achim, keine Installation vorgenommen, sondern nur die Alaska-Verzeichnisstruktur aus einer bestehenden Installation kopiert hat. Dann sind sie nämlich nicht nur nicht aufzufinden, sondern schlicht nicht vorhanden. 8)
Herzlich,
Tom

Statler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 103
Registriert: Di, 22. Jan 2008 9:49
Wohnort: Aachen

Re: TCP Socket

Beitrag von Statler » Do, 07. Nov 2019 23:35

Hallo zusammen,

ich habe mir die CD mal in einer virtuellen Maschine installiert und die Samples rauskopiert. Da, wo die lagen, haette ich die nie gefunden :D

von daher erstmal besten Dank fuer die Info's.

Die Idee, den Socket Listener in einem eigen Thread laufen zu lassen und nach jedem Paket den Thread zu beenden und dann neu zu starten ist nicht schlecht, das werde ich wohl so realisieren.

Gruss

Achim

Benutzeravatar
andreas
Foren-Moderator
Foren-Moderator
Beiträge: 1796
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: TCP Socket

Beitrag von andreas » Fr, 08. Nov 2019 12:07

Hallo Achim,

der Listener nimmt die Verbindungen an und muss immer laufen. Sobald ein neuer Client Verbindung aufgenommen hat, sollte dieser in einem eigenen Thread bearbeitet werden. Diesen Thread kannst du gerne schließen...
Gruß,

Andreas
VIP der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Antworten