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.