Mit der Migration (V4.0->V4.1) wurde der ServerSocket mit ClientIP/ClientPort Adressierung eingeführt:
$_IPS[‚CLIENTIP‘] (nur bei I/O ServerSocket) Empfangene IP-Adresse des Clients
$_IPS[‚CLIENTPORT‘] (nur bei I/O ServerSocket) Empfangsport des Clients
Einstellbar ist am ServerSocket nur der Port (und sonst garnichts): „Der Server Socket öffnet auf dem Server einen Port für alle Netzwerke. Es kann dann auf diesem Port gehorcht und Daten empfangen werden“
In der zugeordneten RegisterVariable wird als übergeordnete Instanz der ServerSocket und als Ziel ein Skript eingetragen. Und dann gilt: „Sollte die übergeordnete Instanz ein ServerSocket sein, stehen zusätzlich noch die Daten $_IPS[‚CLIENTIP‘] und $_IPS[‚CLIENTPORT‘] zur Verfügung.“
Den im ServerSocket eingestellten Empfangs-Port als „Empfangsport des Clients“ zu bezeichnen kann ich ja noch nachvollziehen, weil ja die gleiche Port-Nummer auch als Sende-Port im ClientSocket (neben der IP-Adresse) eingestellt wird.
Selbstverständlich müssen beide Port-Nummern (ClientSocket als Sender, ServerSocket als Empfänger) gleich sein um eine Kommunikation zu ermöglichen.
Willkürlich habe ich auf beiden Seiten die Port-Nummer 45001 eingetragen, im ClientSocket noch die IP-Adresse des ServerSockets.
Im Trace der RegisterVariable erscheint dann z.B.
HEX: 10.06.18 23:54:14.00 | RECEIVED [192.168.0.144:55536] | 47 45 54 20 2F 77 65 61 74 68 65 72 73 74 61 74 69 6F 6E 2F 75 70 64 61 74 65 ...
Die Hex-Darstellung habe ich abgekürzt. In dem Trace glaube ich eine Schreibweise „IP-Adr:Port“ erkannt zu haben.
Man kann auch den IPS-Stack mit print_r($_IPS) im Skript aufzeichnen:
[INSTANCE] => 38594
[SELF] => 22175
[CLIENTIP] => 192.168.0.144
[THREAD] => 10
[CLIENTPORT] => 55536
[SENDER] => RegisterVariable
Warum wird als CLIENTPORT die Nummer 55536 ausgegeben, obwohl die Port-Nummer 45001 eingetragen ist?
Eine andere Kommunikation verwendet die Port-Nummer 45002, hier wird als ‚CLIENTPORT‘ 59674 ausgegeben.
Nicht dass ich unbedingt den ‚CLIENTPORT‘ benötige, ich kenne ihn ja, weil ich ihn eingestellt habe, er sollte aber schon richtig sein; oder liege ich da falsch ?
Viele Grüsse
Harald