[Socket] Connection serveur POP

Signaler
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
Bonjour a tous,
voila j'essai d'écrire une fonction qui me connecte à un serveur POP. voici donc mon code:

int iConnect()
{
    struct        hostent *hstServIP;
    struct        sockaddr_in sinAddr;
    SOCKET        sckActiv;
    int            iResult = 0;
    int            iTentConnect = 0;

    char *sBuffer;

    // serveur
    sPop = "pop.wanadoo.fr";

    // utilisateur
    sBuffer = "util";
    sprintf(sCmd[0], "USER %s\r\n", sBuffer);

    // pass
    sBuffer = "pass";
    sprintf(sCmd[1], "PASS %s\r\n", sBuffer);

    iInitWinsock();
    if ((sckActiv socket(AF_INET, SOCK_STREAM, 0)) INVALID_SOCKET)
        return -1;
    
    if (!(hstServIP = gethostbyname(sPop)))
        return -1;

    sinAddr.sin_addr.s_addr = *((u_long *)hstServIP->h_addr_list[0]);
    sinAddr.sin_port = htons(110);
    sinAddr.sin_family = AF_INET;
    
    iResult = connect(sckActiv, (const struct sockaddr *)&sinAddr, sizeof(sinAddr));
    
    if(iResult != 0)
        return -1;

    WSACleanup();
    closesocket(sckActiv);
    
    return iResult;
}


seulement quand le programme arrive au connect(), bah il n'arrive jamais à effectuer le connect. et je ne comprend pas pourquoi.
comme je ne suis pas habitué à utiliser les socket, je me suis dit que j'ai du oublié quelque chose. mais je ne vois pas quoi.
c'est pour ce que je pose la question sur ce forum.
Merci par avance.
Bob...
"La chance accorde ses faveur aux esprits avertis..."

2 réponses

Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Salut bob, pourrais-tu nous donner le code de iInitWinsock(); ?
En attendant je me penche sur ton problème, je vais m'en créer une.

A+

http://vbaddons.free.fr

if (CPossible)
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Malheureusement je manque de temps, alors je vais te dire la cause du problème :

sinAddr.sin_addr.s_addr = *((u_long *)hstServIP->h_addr_list[0]);

C'est là la cause du problème, c'est le casting qui est pas correct car la réponse de gethostbyname est bonne. D'ailleur tu peux remplacer cette ligne par le IP de wanadoo is tu veux en faire l'essai la la connexion passe #1

sinAddr.sin_addr.s_addr = inet_addr("193.252.22.67");

Bon, alors si tu trouves tu vas poster ? Je suis curieux de savoir (car je fais un programme qui pour l'instant fonctionne seulement au IP et c'est une tare).

A+

http://vbaddons.free.fr

if (CPossible)