Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2010, 02:34
panata
 
Fecha de Ingreso: agosto-2008
Mensajes: 13
Antigüedad: 15 años, 8 meses
Puntos: 0
Problema para obtener ip de un servidor UDP (Sockets en C)

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 original
  1. int MostrarIpServ() {
  2.     struct hostent *datoshost;
  3.     struct sockaddr_in adrhost;
  4.     char nombrehost[200];
  5.     if(gethostname(nombrehost, sizeof(nomhost)) == -1) {
  6.         perror("Error GetHostName"); exit(-1);
  7.     }
  8.     printf("Nombre host:%s\n", nombrehost);
  9.     datoshost = gethostbyname(nombrehost);
  10.     if(datoshost == NULL) {
  11.       perror("Error en gethostbyname\n");
  12.       exit(-1);
  13.     }
  14.     adrhost.sin_addr.s_addr=*((unsigned long *)dadeshost->h_addr_list[0]);
  15.     printf("La @IP del host es: %s", inet_ntoa(adrhost.sin_addr) );
  16.     return 1;
  17. }
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

Última edición por panata; 06/06/2010 a las 02:42