Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema para obtener ip de un servidor UDP (Sockets en C)

Estas en el tema de Problema para obtener ip de un servidor UDP (Sockets en C) en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 06/06/2010, 02:34
 
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

Etiquetas: ip, sockets, udp, servidores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:59.