TCP Socket

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

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

TCP Socket

Beitrag von Statler »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von andreas »

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
Statler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 108
Registriert: Di, 22. Jan 2008 9:49
Wohnort: Aachen

Re: TCP Socket

Beitrag von Statler »

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: 139
Registriert: Mi, 05. Okt 2005 15:10
Wohnort: Wiesloch
Hat sich bedankt: 5 Mal

Re: TCP Socket

Beitrag von Schubi »

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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von Tom »

@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: 108
Registriert: Di, 22. Jan 2008 9:49
Wohnort: Aachen

Re: TCP Socket

Beitrag von Statler »

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
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von andreas »

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
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von Muecke »

Hallo Achim

Ich sollte via MQTT daten abholen und senden.

Kannst du mir da auf die Sprünge helfen, was ich dazu alles brauche.

Vielleicht ein kleiner Einstieg ?

Schöne Grüsse
Thomas
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von Martin Altmann »

Moin Thomas,
vielleicht hilft Dir ja auch noch eines der ersten Alaska-Videos weiter: https://www.youtube.com/watch?v=QtkMpAwruxY

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: TCP Socket

Beitrag von Werner_Bayern »

Servus Achim,

nimm das empfohlene Sample (WB / Hilfe / Desktop-Beispiele) asinet / socket und passe es für Dich an. Das Beispiel ist genial, wir haben das vor ca. 3 Monaten auch so gemacht und einen Server-Dienst damit aufgesetzt, der mit mehreren Android-Handys und Tablets (native App von uns) kommuniziert und Daten austauscht. Läuft rund um die Uhr, bis heute kein Absturz, nichts!

Da hat Alaska top Arbeit geleistet, hat uns sicherlich viele Stunden gespart! =D>
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von Muecke »

Besten Dank für diese Infos

Brauche ich für MQTT nicht einen Brocker um mit dem Protokoll umzugehen ?

Schöne Grüsse
Thomas
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von andreas »

Ja, für MQTT brauchst du einen Brocker, der als Server für den Datenaustausch dient. Unter Linux gibt es "Mosquitto", denn du auch z.B. auf Raspi installieren könntest. Angeblich gibt es den auch für Windows.
Gruß,

Andreas
VIP der XUG Osnabrück
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Re: TCP Socket

Beitrag von Muecke »

Hallo Andreas

Ja habe mir dies runtergeladen und installiert.

Nun warte ich noch auf die Freigabe für die Daten um dies zu testen.

Schöne Grüsse
Thomas
Statler
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 108
Registriert: Di, 22. Jan 2008 9:49
Wohnort: Aachen

Re: TCP Socket

Beitrag von Statler »

Hallo zusammen,

hatte gerade eine PN zu diesem Thema bekommen und bereits geantwortet. Es gibt im Netz freie MQTT Server, die man zum experimentieren benutzen kann. Da die öffentlich sind, sollte man nur Testdaten verwenden. Es gibt mehrere Server, die man alle ausprobieren sollte, zwecks Prüfung, ob der eigene Stack damit klar kommt.

Das MQTT Protokoll ist in einer Art RFC beschrieben, da steht alles drin, was nötig ist. Nach "mqtt-v3.1.1-os.pdf" googeln ...

Gruss

Achim
Antworten