C: fonction bind avec pointeurs sur structure
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je cherche à utiliser bind en lui passant non pas les adresses des structures utilisé par un socket mais des pointeurs sur une structure les contenants. (en gros, j'ai une structure csocket qui contient différents champs...). Or, je m'y prend comme un pied (vu que j'utilise Gnome... enfin bon) et cela ne fonctionne pas ^^ Donc je viens demander de l'aide parce que, au fond, je reconnais que je suis un noob qui vie au crochet de son prochain.
Voila ma super structure:
Et voici le code de noob qui est censé l'initialiser et QUI FONCTIONNE CORRECTEMENT:
Et enfin le code qui procède au bind QUI LUI NE FONCTIONNE PAS: en effet, bind retourne -1
Donc si une ou plusieurs âmes charitables passent pas la et se sentent d'humeur à m'aider, je jure de penser à vous en bien jusqu'à la fin de mes jours :p
Je cherche à utiliser bind en lui passant non pas les adresses des structures utilisé par un socket mais des pointeurs sur une structure les contenants. (en gros, j'ai une structure csocket qui contient différents champs...). Or, je m'y prend comme un pied (vu que j'utilise Gnome... enfin bon) et cela ne fonctionne pas ^^ Donc je viens demander de l'aide parce que, au fond, je reconnais que je suis un noob qui vie au crochet de son prochain.
Voila ma super structure:
struct s_socket { int sock; struct sockaddr_in sock_in; socklen_t sock_in_size; }; typedef struct s_socket csocket;
Et voici le code de noob qui est censé l'initialiser et QUI FONCTIONNE CORRECTEMENT:
csocket *inet_socket(char *ip, int port, int type, int protocol) { csocket *new; new = malloc(sizeof(csocket)); new->sock = socket(AF_INET, type, protocol); if (new->sock == -1) return (NULL); new->sock_in.sin_addr.s_addr = htonl(inet_addr(ip)); new->sock_in.sin_family = AF_INET; new->sock_in.sin_port = htons(port); return (new); }
Et enfin le code qui procède au bind QUI LUI NE FONCTIONNE PAS: en effet, bind retourne -1
int cbind(csocket *sock) { return (bind(sock->sock, (struct sockaddr*)&sock->sock_in, sizeof(sock->sock_in))); }
Donc si une ou plusieurs âmes charitables passent pas la et se sentent d'humeur à m'aider, je jure de penser à vous en bien jusqu'à la fin de mes jours :p