Pages : 1
#1 Le 08/04/2010, à 22:00
- diplomats
C , Socket , Probleme de cast
Bonjour
je bute sur un problème suivant
j'ai ma fonction
struct sockaddr * getsock(string machineId)
{
char *htoname = (char*)machineId.c_str(); //adresse de la machine
u_long toaddr;
u_long fromaddr;
int port = 12345;
struct sockaddr_in *to;
struct hostent *toinfo;
u_short portnum = port;
socklen_t addr_in_size;
//from = (struct sockaddr_in *)malloc(addr_in_size);
to = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in));
if(!to)
{
printf("ERREUR: Pas assez de mémoire \n");
exit(-1);
}
if((toinfo = gethostbyname(htoname)) == NULL){
fprintf(stderr,"Error %d in gethostbyname: %s\n",errno,strerror(errno));
exit(errno);
};
toaddr = *(u_long *)toinfo->h_addr_list[0];
addr_in_size = sizeof(struct sockaddr_in);
memset((char *)to,(char)0,addr_in_size);
to->sin_family = AF_INET;
to->sin_addr.s_addr = toaddr;
to->sin_port = /*(htons)*/portnum;
return (struct sockaddr *)to;
}
et je l'appelle
to2=getsock(MESVOISINS[y].nom_machine);
int re = sendto(sockfd, message, strlen(message), 0,(struct sockaddr*)to2, addr_in_size);
if (re=-1)
{
fprintf(stderr,"Error %d sendto: %s\n",errno,strerror(errno));
exit(errno);
}
mais a la compilation j'ai ce probleme :
error: cannot convert ‘sockaddr_in’ to ‘sockaddr_in*’ in assignment
que puis je faire pour remedier a cela
Dernière modification par diplomats (Le 08/04/2010, à 22:05)
Hors ligne
#2 Le 08/04/2010, à 22:05
- bibleu
Re : C , Socket , Probleme de cast
Salut
tu peux donner juste la ligne qui pose problème stp.
Edit: si tu remplace (struct sockaddr*)to2 par (struct sockaddr*)&to2
Dernière modification par bibleu (Le 08/04/2010, à 22:06)
Hors ligne
#3 Le 08/04/2010, à 22:15
- diplomats
Re : C , Socket , Probleme de cast
la ligne qui cause probleme c'est celle ci
to2=getsock(MESVOISINS[y].nom_machine);
Hors ligne
#4 Le 08/04/2010, à 22:25
- bibleu
Re : C , Socket , Probleme de cast
comment tu déclare to2 ?
Hors ligne
#5 Le 08/04/2010, à 22:31
- diplomats
Re : C , Socket , Probleme de cast
comme cela :
struct sockaddr_in *to2;
Hors ligne
#6 Le 08/04/2010, à 22:49
- bibleu
Re : C , Socket , Probleme de cast
C'est koi le string dans struct sockaddr * getsock(string machineId) ?
Hors ligne
#7 Le 08/04/2010, à 22:52
- diplomats
Re : C , Socket , Probleme de cast
ca renvoi le nom de la machine sur laquelle on veut récupérer les informations pour pouvoir utiliser le sendto
Hors ligne
#8 Le 08/04/2010, à 22:56
- bibleu
Re : C , Socket , Probleme de cast
ok chez moi sa compile sans warning si je fait ca:
struct sockaddr_in * getsock(string machineId){
...
return to;
}
Hors ligne
#9 Le 08/04/2010, à 23:22
- diplomats
Re : C , Socket , Probleme de cast
damn , comment tu fait moi j'ai cette erreur
cannot convert ‘sockaddr_in’ to ‘sockaddr_in*’ in assignment
Hors ligne
#10 Le 09/04/2010, à 17:28
- bibleu
Re : C , Socket , Probleme de cast
hummm bizarre
il est gros ton code ? tu pourrait mettre la totalité et dire avec quel commande tu compile.
Hors ligne
#11 Le 09/04/2010, à 23:16
- telliam
Re : C , Socket , Probleme de cast
comme cela :
struct sockaddr_in *to2;
si le proto de ta fonction est struct sockaddr * getsock(string machineId)
alors ca devrait etre struct sockaddr* to2;
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
Pages : 1