How do I get the port number for a given service?

Answer Posted / chaitanya

Use the getservbyname() routine. This will return a pointer to a servent structure. You are interested in the s_port field, which contains the port number, with correct byte ordering (so you don't need to call htons() on it). Here is a sample routine:

/* Take a service name, and a service type, and return a port number. If the service name is not found, it tries it as a decimal number. The number returned is byte ordered for the network. */

int atoport(char *service, char *proto)

{

int port;

long int lport;

struct servent *serv;

char *errpos;

/* First try to read it from /etc/services */

serv = getservbyname(service, proto);

if (serv != NULL)

port = serv->s_port;

else {

/* Not in services, maybe a number? */

lport = strtol(service,&errpos,0);

if ( (errpos[0] != 0) || (lport < 1)

|| (lport > 5000) )

return -1;

/* Invalid port address */

port = htons(lport);

}

return port;

}

Is This Answer Correct ?    0 Yes 0 No



Post New Answer       View All Answers


Please Help Members By Posting Answers For Below Questions

What is af_inet in socket?

622


What does af mean in sockets?

672


What's the difference between impact sockets and regular sockets?

608


How can I set the timeout for the connect() system call?

1245


Are sockets files?

649






Where is the socket located?

637


Is tcp or unix socket faster?

614


How many socket connections can a server handle?

619


What is a deep well socket?

683


What is the purpose of socket?

661


What pieces of information make up a socket?

719


What is the difference between a socket and a port?

616


What's better 6pt or 12pt sockets?

610


Why does the sockets buffer fill up sooner than expected?

1116


How do I convert a string into an internet address?

1039