Utilisateur anonyme
-
10 mars 2012 à 21:15
Utilisateur anonyme -
11 mars 2012 à 22:33
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.
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
Problème résolu, au final il ne venait pas de la.
En attendant, j'ai quand même un bon début de librairie C pour la manipulation de socket simplifié :)
Forum Programmation
Trouvez des réponses à vos questions sur les langages, les frameworks et les astuces de codage. Échangez avec d'autres développeurs passionnés pour améliorer vos compétences en programmation et rester au fait des dernières tendances du secteur.