The soAddrInetGet function will return the IP address and port from a socket address.
Input:
address : STRING
The socket address.
Output:
host : STRING
The IP address.
port : DINT
The IP port number.
Returns: INT
1
|
- Success.
|
0
|
- The function is not supported.
|
Declaration:
FUNCTION soAddrInetGet : INT;
VAR_INPUT
address : STRING;
host : ACCESS STRING;
port : ACCESS DINT;
END_VAR;
Example:
INCLUDE rtcu.inc
PROGRAM udp_example;
VAR
handle : SYSHANDLE;
address : STRING;
buf : ARRAY [1..230] OF SINT;
size : DINT;
local : STRING;
remote : STRING;
rc : INT;
port : DINT;
host : STRING;
str : STRING;
END_VAR;
netOpen(iface := _NET_IFACE_LAN1);
rc := soCreate(type := _SO_TYPE_DGRAM, protocol := _SO_PROT_UDP, socket := handle);
IF rc < 1 THEN
DebugFmt(message := "soCreate=\1", v1 := rc);
END_IF;
soAddrInetSet(address := address, port := 5022);
rc := soBind(socket := handle, address := address);
IF rc < 1 THEN
DebugFmt(message := "soBind=\1", v1 := rc);
END_IF;
BEGIN
rc := soRecvFrom(
socket := handle,
data := ADDR(buf),
maxsize := SIZEOF(buf),
size := size,
local := local,
remote := remote
);
IF rc < 1 THEN
END_IF;
soAddrInetGet(address := remote, host := host, port := port);
str := strFromMemory(src := ADDR(buf), len := INT(size));
DebugFmt(message := " soRecvFrom = \1", v1 := rc);
DebugFmt(message := " interface = \1", v1 := soAddrToInterface(address := local));
DebugMsg(message := " IP address = " + host);
DebugFmt(message := " IP port = \4", v4 := port);
DebugMsg(message := " data = [" + str + "]");
END;
END_PROGRAM;
|