C: fonction bind avec pointeurs sur structure

Résolu/Fermé
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.

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

1 réponse

Utilisateur anonyme
11 mars 2012 à 22:33
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é :)
0