2 cambios haria yo:
- El que creo haria todo funcionar: quitar el & a address.
if (bind(handler, (struct sockaddr *)&address, sizeof(address)) == -1)
quedaria
if (bind(handler, (struct sockaddr *)address, sizeof(address)) == -1)
y, por otro lado, desconozco la funcion getservbyport(), yo hubiera hecho
address.sin_port = htons(port);
Mirar tambien:
http://www.umiacs.com/sockaddr_inman.html