Buenas,
Hice una función para mostrar la ip asociada a un socket TCP con función de servidor en C mediante el nombre de host.
El problema viene cuando intento usar la misma función para mostrar la ip de un socket servidor UDP. La función es la que sigue:
Código C:
Ver originalint MostrarIpServ() {
struct hostent *datoshost;
struct sockaddr_in adrhost;
char nombrehost[200];
if(gethostname(nombrehost, sizeof(nomhost)) == -1) {
}
printf("Nombre host:%s\n", nombrehost
); datoshost = gethostbyname(nombrehost);
if(datoshost == NULL) {
perror("Error en gethostbyname\n"); }
adrhost.sin_addr.s_addr=*((unsigned long *)dadeshost->h_addr_list[0]);
printf("La @IP del host es: %s", inet_ntoa
(adrhost.
sin_addr) ); return 1;
}
Como es que me funciona si el socket es TCP pero no si es UDP? La función no debería ser la misma en ambos casos?
Me da un warning en la linea 9 (datoshost = gethostbyname(nombrehost);) :assignment makes pointer from integer without a cast.
Y un error en la linea 14 (adrhost.sin_addr.s_addr=*((unsigned long *)dadeshost->h_addr_list[0])): error: dereferencing pointer to incomplete type