+ Antworten
Ergebnis 1 bis 3 von 3
  1. #1
    Registriert seit
    Dec 2011
    Ort
    am Ende des Internets
    Beiträge
    292

    Standard Systemvariable CLIENTPORT über RegisterVariable von I/O ServerSocket

    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.
    Code:
    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:
    Code:
        [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

  2. #2
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    6,814

    Du liegst da falsch.
    Bei TCP baut ein Client auf einem zufälligen HighPort eine Verbindung zu einen Server auf einem bestimmten ZielPort auf.
    Die Ports sind eigentlich nie Identisch.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  3. #3
    Registriert seit
    Dec 2011
    Ort
    am Ende des Internets
    Beiträge
    292

    Danke fürs "Richtiglegen"

    Habs mir in Wikipedia angesehen und begriffen:

    Will ein Client eine Verbindung aufbauen, erzeugt er einen eigenen Socket aus seiner Rechneradresse und einer eigenen, noch freien Portnummer. Mit Hilfe eines ihm bekannten Ports und der Adresse des Servers kann dann eine Verbindung aufgebaut werden. Eine TCP-Verbindung ist durch folgende 4 Werte eindeutig identifiziert:

    Quell-IP-Adresse
    Quell-Port
    Ziel-IP-Adresse
    Ziel-Port
    Schönen Tag noch
    Harald

Ähnliche Themen

  1. Serversocket Antwort?
    Von elektroniktommy im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 4
    Letzter Beitrag: 02.11.16, 23:20
  2. IPS Systemvariable
    Von ralph125 im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 07.02.13, 17:09
  3. ServerSocket?
    Von sn00py im Forum Skripte, PHP, SQL
    Antworten: 25
    Letzter Beitrag: 12.10.12, 15:44
  4. DMX via ServerSocket von V2.2 zur V1
    Von flyship im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 0
    Letzter Beitrag: 17.12.09, 10:00
  5. Bereitstellung Serversocket
    Von blood3d@gmx.de im Forum Skripte, PHP, SQL
    Antworten: 8
    Letzter Beitrag: 21.01.07, 00:45