/* Codigo elementar para deteccao da interface atraves da qual um servico TCP foi acionado. Util para implementar servidores em maquinas multidominio. Este programa foi desenvolvido a partir da analise do fonte do NCSA httpd. */ #include <netinet/in.h> #include <stdio.h> main(argc,argv) int argc; char *argv[]; { struct sockaddr_in serv_addr; int rc; long my_addr; int serv_addr_len; unsigned char dot1,dot2,dot3,dot4; serv_addr_len = sizeof(serv_addr); rc = getsockname(0,(struct sockaddr *)&serv_addr,&serv_addr_len); if (rc == 0) { my_addr = ntohl(serv_addr.sin_addr.s_addr); dot4 = my_addr & 0x000000ff; dot3 = (my_addr >> 8) & 0x0000ff; dot2 = (my_addr >> 16) & 0x00ff; dot1 = my_addr >> 24; printf("%u.%u.%u.%u",dot1,dot2,dot3,dot4); } else { printf("unknown\n"); } }