Programmation réseaux Erreur Bind: Address family not supported
Résolu
sambia39
Messages postés
610
Date d'inscription
Statut
Membre
Dernière intervention
-
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens poster ce message parce qu'il me semble que j'ai fait une erreur mais laquelle je ne sais pas.
J'obtiens le message suivant
à bientôt.
/!\ C'est la que ça coince
--
Toute connaissance est une réponse à une question.
Je viens poster ce message parce qu'il me semble que j'ai fait une erreur mais laquelle je ne sais pas.
J'obtiens le message suivant
Et même après plusieurs vérifications si je suis en IPv6 ou iPv4 pareils rien à faire je vous poste certaines portions de mon code s'il y a des experts qui peuvent m'aider merci d'avance
Erreur Bind: Address family not supported by protocol
à bientôt.
#define D_NULL 0 #define D_ERROR -1 #define D_LOG 50 #define D_PORT 4102
/***
* Fonction configuration
* & préparation de la
* socket elle renvoie
* (-1) en cas d'erreur
* (i_Sock) si tout vas bien
***/
int f_InitSrv( struct sockaddr_in sin ){
int i_Sock = D_NULL;
i_Sock = socket( AF_INET, SOCK_STREAM, D_NULL );
if( i_Sock <= D_ERROR )
return (D_ERROR);
/* Config Sin */
bzero( &sin, sizeof(sin) );
sin.sin_family = AF_INET;
sin.sin_port = htons( D_PORT );
sin.sin_addr.s_addr = ntohs(INADDR_ANY);
return (i_Sock);
}
/!\ C'est la que ça coince
/* Config Bind */
int i_Bind = D_NULL;
i_Bind = bind( ret , (struct sockaddr *)&sin, sizeof(struct sockaddr_in) );
if( i_Bind <= D_ERROR ){
perror("Erreur Bind");
exit(2);
}
--
Toute connaissance est une réponse à une question.
1 réponse
-
Bonjour,
Tu veux le faire en IPv6 ou en IPv4 ?
Car en IPv6, ce ne sont pas les mêmes structures à utiliser.
Il faut : sockaddr_in6 au lieu de sockaddr_in et pas mal d'autres choses à adapter.-
-
Bonsoir problème résolu, le soucie était ma structure
sin
qui ne subissait aucune modification du coup ma fonction n'avait aucun effet, fallait que je passe ma structure en pointeur comme ceci/*** * Vérification config * Socket IPv4 / IPv6 ***/ int ret = f_InitSrv( &sin, &sin6, 0 );
int f_IPv4( struct sockaddr_in *sin ){ int i_Sock = D_NULL; i_Sock = socket( AF_INET, SOCK_STREAM, D_NULL ); if( i_Sock <= D_ERROR ) return ( D_ERROR ); /* Config Sin */ bzero(sin, sizeof( *sin ) ); sin->sin_family = AF_INET; sin->sin_port = htons( D_PORT ); sin->sin_addr.s_addr = ntohs( INADDR_ANY ); return ( i_Sock ); }
Mercis à tous et à bientôt -
-
-