hallo
kannst du etwas genauer erklären warum du diese daten brauchst
wer ist client und wer ist server ?
was machen diese geräte
wenn du nur einen bestimmten client akzeptieren möchtest, dann kann man dies auch beim IP_CONTROL (Server-Mode) vorgeben
aber mir ist noch nicht klar, was du vorhast
prinzipiell:
der Server lauscht auf einem vorgegenenen Port ob ein client sich verbinden möchte
wenn es zum verbindungswunsch kommt, bekommt der server die quell ip und port nummer des clients mitgeteilt und kann darauf reagieren
mittels SysSockAccept- Socketdaten können die Client-Daten herausgefischt werden.
Codeauszug vom IP_CONTROL
TS_OPEN: (* Waiting for incomming connection *)
sockaddr_size := SIZEOF(sockaddr);
socket := SysSockAccept(server_socket, ADR(sockaddr), ADR(sockaddr_size));
IF socket <> SOCKET_INVALID THEN (* neuer Verbindungswunsch vorhanden *)
IF c_mode = BYTE#2 AND sockaddr.sin_addr <> SysSockNtohl(c_ip) THEN (* Mode 2 = TCP + PASSIVE + PORT + IP auf richtige Partner-IP prüfen *)
state:= C_CLOSE;
ELSE
IF plc_841 OR plc_881 THEN
SysSockSetOption(socket, 6, SOCKET_TCP_NODELAY, ADR(dint_true), SIZEOF(dint_true)); (* Set Push-Bit *)
END_IF;
SysSockIoctl(socket, SOCKET_FIONBIO, ADR(dint_true)); (* NonBlocking mode *)
c_ready := TRUE; (* Connected *)
state := C_WAIT;
END_IF;
ELSIF NOT c_enable THEN (* keine freigabe mehr ? *)
state:= C_CLOSE;
END_IF;