getservbyport() — Get a service entry by port
Standards
Standards / Extensions | C or C++ | Dependencies |
---|---|---|
XPG4.2 |
both |
Format
X/Open:
#define _XOPEN_SOURCE_EXTENDED 1
#include <netdb.h>
struct servent *getservbyport(int port, const char *proto);
Berkeley
sockets:
#define _OE_SOCKETS
#include <netdb.h>
struct servent *getservbyport(int port, char *proto);
General description
The getservbyport()
call searches the /etc/services or the tcpip.ETC.SERVICES
data set for the first entry that matches the specified port number
and protocol name. If proto is NULL, only the port number must match.
- Parameter
- Description
- port
- The port number.
- proto
- The protocol name.
The getservbyport() call returns a pointer to a servent structure for the port number specified on the call. getservbyname(), getservbyport(), and getservent() all use the same static area to return the servent structure. This static area is only valid until the next one of these functions is called on the same thread.
The servent structure
is defined in the netdb.h include file and contains the following
elements:
- Element
- Description
- s_aliases
- An array, terminated with a NULL pointer, of alternative names for the service.
- s_name
- The official name of the service.
- s_port
- The port number of the service.
- s_proto
- The protocol required to contact the service.
Special behavior for C++: To use this function with C++, you must use the _XOPEN_SOURCE_EXTENDED 1 feature test macro.
Returned value
The return value points to data that is overwritten by subsequent calls returning the same data structure.
If successful, getservbyport() returns a pointer to a servent structure.
If unsuccessful or End Of File (EOF), getservbyport() returns a NULL pointer.