socket_getpeername

Queries the remote side of the given socket

&reftitle.description; `bool` `socket_getpeername` `Socket` `socket` `string` `address` `int` `port`&null;

Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type.

&reftitle.parameters;

`socket`

- A `Socket` instance created with `socket_create` or `socket_accept`.

`address`

- If the given socket is of type `AF_INET` or `AF_INET6`, `socket_getpeername` will return the peers (remote) IP address in appropriate notation (e.g. `127.0.0.1` or `fe80::1`) in the `address` parameter and, if the optional `port` parameter is present, also the associated port.

  If the given socket is of type `AF_UNIX`, `socket_getpeername` will return the Unix filesystem path (e.g. `/var/run/daemon.sock`) in the `address` parameter.

`port`

- If given, this will hold the port associated to `address`.

&reftitle.returnvalues;

&return.success; `socket_getpeername` may also return &false; if the socket type is not any of `AF_INET`, `AF_INET6`, or `AF_UNIX`, in which case the last socket error code is not updated.

&reftitle.changelog;

&Version; | &Description;
&sockets.changelog.socket-param;

&reftitle.notes;

`socket_getpeername` should not be used with `AF_UNIX` sockets created with `socket_accept`. Only sockets created with `socket_connect` or a primary server socket following a call to `socket_bind` will return meaningful values.

For having `socket_getpeername` to return a meaningful value, the socket it is applied upon must of course be one for which the concept of "peer" makes sense.

&reftitle.seealso;

- `socket_getsockname`
- `socket_last_error`
- `socket_strerror`