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
How does unix socket work?
system choose one for me on the connect() call? Should I bind() a port number in my client program, or let the?
What is a sae socket?
Can a socket have multiple ports?
What's the difference between a socket and a port?
Where is the socket located?
What is a deep well socket?
How can I write a multi-homed server?
What is socket address?
What is difference between socket and websocket?
What is the purpose of socket?
What are the pros/cons of select(), non-blocking I/O and SIGIO?
How many sockets can a cpu have?
What is the difference between SO_REUSEADDR and SO_REUSEPORT?
Is socket a hardware or software?