[Socket] Connection serveur POP

cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 15 mars 2006 à 19:14
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014 - 15 mars 2006 à 20:40
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

cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
15 mars 2006 à 20:05
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)
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
15 mars 2006 à 20:40
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)
0
Rejoignez-nous