SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Ferr en Miércoles 19 de Julio de 2006, 22:58
-
Buenas !!! Tengo un problema con la funcion bind al compilar con gcc, me da el siguiente error :
Sockets2.c:36: aviso: se pasa el argumento 2 de ‘bind’ desde un tipo de puntero incompatible
El codigo es muy simple:
#include "sys/socket.h"
#include "sys/types.h"
#include "stdio.h"
#include "stdlib.h"
main (){
int sockfd;
struct sockaddr
{
unsigned short sa_family;
char sa_data[14];
};
struct in_addr
{
unsigned long s_addr;
};
struct sockaddr_in
{
short int sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8];
}direccion;
sockfd =socket (AF_INET,SOCK_DGRAM,0);
direccion.sin_family=AF_INET;
direccion.sin_port= htons(80);
direccion.sin_addr.s_addr=inet_addr("192.168.1.1");
bind (sockfd, (struct sockaddr *)&direccion, sizeof(direccion));
printf ("Tot correcte \n");
}
No se porque me dice que el segundo parametro de bind esta mal, no creo que sea problema de casting
-
direccion es de tipo sockaddr_in no sockaddr.
No puedes hacer una conversión de tipo cast entre dos estructuras incompatibles.
Saludos.
-
Hola:
Los include deberían ser con < > en vez de con "".
Si se pone < > busca los .h en los directorios del sistema. Si los pones con " " los busca en el mismo directorio donde están tus .c Como son del sistema, deberían ser con < >.
Se bueno.