ServerSocket?

Hallo bin gerade auf der Suche nach der Doku des ServerSockets?

ICh finde da nichts dazu, was brauche ich da genau?

Ich möchte gerne einen Server Socket auf Port 2701 horchen lassen, wo sich dann verschiedene Geräte verbinden und einen Befehl schicken lassen können.

Allerdings weiss ich nicht, was ich da genau „verbauen“ muß - cutter - register variable – ???

Und wie ich dann auch erkennen kann von welchem gerät das ganze erfolgt usw.

Weiters habe ich bei der Einstellung des Server Sockets auch nicht herausgefunden wie man zwischen UDP und TCP unterscheiden kann, falls es möglich wäre?

[edit]Also die Daten sehe ich im Server Socket, Cutter und auch in einer Register Variable

Aber die probleme sind, ich weiss nicht welche ich da wirklich brauche, und das größte problem ist, ich muß auch ein OK zurückschicken, und da weiss ich nicht wie und wo …

Aber die probleme sind, ich weiss nicht welche ich da wirklich brauche, und das größte problem ist

der war Gut. Woher sollen wir es wissen. :confused:

Ein OK, kannst Du über die Regvar oder den Serversocket zurück senden. Sieh dir dazu die Befehle im Script an. STRG+Leertaste.

Ja schon klar, nur mein PRoblem ist, ich weiss nicht wie ich da was zurücksenden kann.

Ich habe ja einen Server Socket, auf den verbinden sich sagen wir mal 3 Clients
Nun bekomme ich mit das ein Client sagen wir „LICHT_EIN“ schickt

Ich muß nun diesem Client auf der selben TCP Verbindung ein „OK“ zurückschicken

Und hier ist die frage, wie kann ich auf der TCP Verbindung wo ich Daten bekomme was zurückschicken?

Glaskugel wird diese Woche nicht mehr repariert.

Wenn mehrere Geräte auf einem Socket oder Bus senden sind diese in der Regel durch eine eindeutige ID zu unterscheiden. Wenn das bei dir nicht der Fall sein sollte, kannst Du das vergessen, da Du, wie schon gemerkt nicht weist an welche Adresse zu senden ist.

Wenn das Protokoll nicht bekannt ist kannst Du es auch vergessen oder mühsam die Daten ersniffen und hoffen das irgendwann Erfolg sich einstellt. Wobei, sofern vorhanden, die Checksumme nicht außer Acht gelassen werden darf.

Protokoll ist vorhanden, Keiune Checksum, das ist auch lles kein Problem.

Das Hauptproblem ist folgendes

Der Client, baut eine TCP Sitzung zum Server auf, schickt dann seinen Text, und wartet IN DER SELBEN TCP Sitzung auf ein OK.
Und da hilft es auch nicht wenn man eine ID oder sonst was weiss, denn man muß auf dem selben Socket zurücksenden.

Ich habe das ganze schon in einem eigenen Delphi programm funktionieren, da geht es onatürlich hne probleme.
Ich möchte jetzt nur, das ganze nach IPSymcon übertragen, und da es da ja auch den ServerSocket gibt, muß es ja eine Möglichkeit geben, auf dem selben Kanal was zurückzuschicken, sonst bringt das ganze ja nicht wirklich was …

Alternativ kann ich mir in Delphi einen Wrapper schreiben, der das dann umschifft … nur glaube ich nicht, das es in IPSymcon nicht möglich ist, da ja sonst der Serversocket nicht wirklich zu gebrauchen ist (wenn der nur empfangen kann … )

da ja sonst der Serversocket nicht wirklich zu gebrauchen ist (wenn der nur empfangen kann … )

Ich hatte oben schon mal geschrieben, schau dir die Befehle an.

So sendet der Serversocket.

SSCK_SendText(12345, "OK");

Ja aber es sind ja 3 Clients verbunden, zu diesem ServerSocket
Da muß man ja angeben an welchen Client das ganze verschickt werden soll!

Ein reines SSCK_SendText kan in diesem Fall ja nicht funktionieren

Ich frag jetzt mal ganz blöd. :smiley: Wie unterscheidest Du es denn in Delphi wenn keine Kennung vorhanden ist. Wenn es dort doch geht, setz es doch nach PHP um.

Also in Delphi ist es leicht, da hast einen Server Socket, der macht dann automatisch für jeden verbunden Client einen eigenen Thread auf und kommt dann was auf dieser Verbindung daher, dann liest man das aus und schickt AUF DER SELBEN Verbindung wieder was zurück.

Da hast ja dann eion OBjekt, also automatisch pro Connection auch einen ClientSocket, wo du auch alle daten der Verbindung hast usw…

Aber wie es hier geht das kann ich auch nicht sagen, deswegen frage ich ja.

Und es rein in php zu lösen habe ich hier im forum schon gelesen das es nicht gut ist, da man da dann das script timeout umgehen muß und eine endlosschleife hat sozusagen …

Aha, da ist es doch.

Da hast ja dann eion OBjekt, also automatisch pro Connection auch einen ClientSocket, wo du auch alle daten der Verbindung hast usw…
daher kann er unterscheiden.

Ja das ist mir schon klar wie es in Delphi geht und warum es in Delphi geht :wink:
Das war ja auch nicht die Frage :slight_smile:

Die Frage ist, das ganze muß sich doch auch in IPS umsetzen lassen, zu was wäre sonst der ServerSocket hier da?
Wäre ja unnütz, wenn so was primitives wie zurücksenden nicht gehen würde oder?
da stimmst mir sicher auch zu?

Dein IPS-Serversocket macht dir aber keine 3 Clientsocket auf.

zu was wäre sonst der ServerSocket hier da

um sich z.B. mit einem Clientsocket zu verbinden. usw…

naja, dann frag mal parsey :wink: auch hier muß wenn sich 3 clients auf einen serversocket verbinden, und dazu ist ja wohl die einstellunge „Maximale Verbindungen“ da - auch intern der Serversocket mit 3 clientsockets machen, denn sonst wird es rein technisch einfach nicht funktionieren :wink:

Die frage ist nur wie bzw bekommt man das überhaupt mit.

Du kannst beim Server Socket den Empfänger nicht angeben. Es wird immer an alle verbundenen Clients gesendet. Das kannst du entweder über RegVar_SendText machen oder SSCK_SendText.

paresy

Besteht die möglichkeit, das sich das ändert?
Ist blöd jetzt da ich mir ein extra App. Machen muss und das dann als Dienst laufen lassen muss …als Übergangslösung geht’s aber auf dauer würd ich das gerne vermeiden

Hi,

nimm doch einfach das verbindungslose shout & forget Protokoll UDP.

Befehlsübersicht gibt´s im Script; U eintippen und dann die STRG und die Leertaste.

Hier kann man sogar die sendende IP ermitteln.

Sollte also dein Problem lösen.

Falls es dann mehr Kommunikation geben sollte, so steht es dir frei für jeden dann ermittelten Sender einen eigenen TCP Socket zu öffnen.

mfg

BerndJ

Nein.

paresy

Leider kann ich hier kein UDP verwenden da es sich hier um AVR NET IO mit Ethersex handelt, und da das interne ECMD verwende, da dieses schon perfekt funktioniert und sehr gut implementiert ist - nur eben ein OK als Anwort erwartet …

Naja ist zwar schade, aber kann man nichts machen …

Wie wärs, wenn Du für jedes Gerät einen eigenen Server Socket erstellst?
Verbraucht zwar mehrere Ports. Aber du kannst jedem Gerät separat antworten.

cu…

Nein ich habs jetzt eh schon per externen programm gelöst, zwar nicht die feine Art, aber wenns nicht anders geht …

Die Geräte schicken die Anfragen immer zum selben Port das ist eben das Protokoll der Geräte …