soAddrInetGet (Function)

Top  Previous  Next

Architecture:

NX32L

Firmware version:

1.08.00


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..230OF SINT;
  size    : DINT;
  local   : STRING;
  remote  : STRING;
  rc      : INT;
 
  port    : DINT;
  host    : STRING;
  str     : STRING;
END_VAR;
 
// Open network
netOpen(iface := _NET_IFACE_LAN1);
 
// Open UDP socket
rc := soCreate(type := _SO_TYPE_DGRAMprotocol := _SO_PROT_UDPsocket := handle);
IF rc < 1 THEN
  // Error handling
  DebugFmt(message := "soCreate=\1", v1 := rc);
END_IF;
 
// Listen to port 5022 on any network interface
soAddrInetSet(address := addressport := 5022);
rc := soBind(socket := handleaddress := address);
IF rc < 1 THEN
  // Error handling
  DebugFmt(message := "soBind=\1", v1 := rc);
END_IF;
 
BEGIN
  // Read data (blocks until data is available)
  rc  := soRecvFrom(
                    socket  := handle,
                    data    := ADDR(buf),
                    maxsize := SIZEOF(buf),
                    size    := size,
                    local   := local,
                    remote  := remote
                   );
  IF rc < 1 THEN
    // Error handling
  END_IF;
 
  // Get information
  soAddrInetGet(address := remotehost := hostport := port);
  str := strFromMemory(src := ADDR(buf), len := INT(size));
 
  // Show information
  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;