if ((c = strchr(srv_socket[i].addr, ':')) != NULL) {
*c++ = '\0';
port = (short) atoi(c);
}
Remarquez la remarquable arithmétique de pointeurs qui permet, en trois instructions, de séparer une chaîne au format "addr:port" en une chaîne addr et un entier port.
Par contre, on ne peut pas dire que ce soit IPv6-ready.
(source : fichier d'exemple server.c de la bibliothèque "State Threads")