IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Socket : vérifier un proxy


Sujet :

C++

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut Socket : vérifier un proxy
    Bonjour,

    J'ai esseyer de faire un script qui vérifie si un proxy fonctionne ou non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <iostream>
    #include <winsock2.h>
    #include <fcntl.h>
    #include <sys/fcntl.h>
    #pragma comment(lib, "ws2_32.lib")
    using namespace std;
     
    int main(){
    	WSADATA WSAData;
    	WSAStartup(MAKEWORD(2,0), &WSAData);
    	SOCKET sock;
    	SOCKADDR_IN sin;
    	unsigned long nonblocking=1;
     
    	sin.sin_addr.s_addr	= inet_addr("195.175.37.8"); 
    	sin.sin_family		= AF_INET;
    	sin.sin_port		= htons(80);
    	sock = socket(AF_INET,SOCK_STREAM,0);
     
        /* LINUX: */
        //fcntl (sock, F_SETFL, O_NONBLOCK);                                    
        /* WINDOWS: */
        if(ioctlsocket(sock, FIONBIO, &nonblocking)<0){
    		cout<<WSAGetLastError()<<endl;
    		cerr<<"La socket ne peut être rendu non-bloquante"<<endl;
            cerr<<"On continue quand même avec socket bloquante. Patience."<<endl;
        }
     
    	connect(sock, (SOCKADDR *)&sin, sizeof(sin));
    	if(WSAGetLastError()!=WSAEWOULDBLOCK){ // LINUX : EINPROGRESS
    		cout<<"Erreur 0: "<<WSAGetLastError()<<endl;
            exit(1);
        }else{
    		fd_set readfds;
    		FD_ZERO(&readfds);
    		FD_SET(sock, &readfds); 
    		struct timeval tv;
    		tv.tv_sec = 2;
    		tv.tv_usec = 500*1000;
    		int r;
     
    		if((r=select(sock+1, &readfds, NULL, NULL, &tv))<0){
    			cout<<"Erreur 1: "<<WSAGetLastError()<<endl;
    			exit(1);
    		}else if(r==0){
    			cout<<"Erreur 2: "<<WSAGetLastError()<<endl;
    			exit(1);
    		}else{
    			cout<<"Le proxy a répondu favorablement. Tout semble ok."<<endl; 
    		}
    	}
     
    	WSACleanup();
    	return 0;
    }
    Même si je donne à mon script une ip de proxy, il m'affiche toujours: "Erreur 2: 0", pourquoi ?

    Merci d'avance...

  2. #2
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Oublies pas que c'est socket(PF_INET, SOCK_STREAM, 0) et non avec AF_INET

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    Si j'ai bien compris "af_inet" est un vieux standart ?!

    J'ai donc modifié comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	sin.sin_family		= PF_INET;
    	sin.sin_port		= htons(80);
    	sock = socket(PF_INET,SOCK_STREAM,0);
    Mais j'ai toujours le même problème.

  4. #4
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Non, laisses le sin_family à AF_INET, c'est juste qu'ils n'ont rien à voir... Je me suis fait corriger y'a 2-3 jours :

    Citation Envoyé par Emmanuel Delahaye
    C'est pas mal, mais il ne faut pas confondre AF_INET et PF_INET, même si cette confusion est fréquente.

    PF = Protocol Family. C'est pour le paramètre de socket()
    AF = Address Family. C'est pour la structure d'adressage (SOCKADDR_IN).

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    D'accord monsieur

    Personne ne sais d'où peut venir le problème ?

  6. #6
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Si t'essaies de faire ça à la place ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    r=select(sock+1, &readfds, NULL, NULL, &tv)
     
    if(r<0)
    {
        cout << "Erreur 1: " <<WSAGetLastError() << endl;
        exit(1);
    }
    else if(r==0)
    {
        cout << "Erreur 2: " << WSAGetLastError() << endl;
        exit(1);
    }
    else{
        cout << "Le proxy a répondu favorablement. Tout semble ok." << endl;
    }
    Je veux dire donner la valeur à r avant la série des if, la partie avant reste comme ca

    Je vais manger et puis je tenterai de regarder tout ton code

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    Merci mais ça ne semble pas changer quelque chose au résultat...

  8. #8
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut Re: Socket : vérifier un proxy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #include <iostream>
    #include <winsock2.h>
    #include <fcntl.h>
    #include <sys/fcntl.h>
    #pragma comment(lib, "ws2_32.lib")
    using namespace std;
     
    int main()
    {
        /* Correction : Utilise la version 2,2 ;) */
        WSADATA WSAData;
        WSAStartup(MAKEWORD(2,2), &WSAData);
     
        SOCKET sock;
        SOCKADDR_IN sin;
        unsigned long nonblocking = 1;
     
        sin.sin_family		= AF_INET;
        sin.sin_addr.s_addr     = inet_addr("195.175.37.8"); 
        sin.sin_port		 = htons(80);
     
        sock = socket(PF_INET, SOCK_STREAM, 0);
     
        /* LINUX: */
        //fcntl (sock, F_SETFL, O_NONBLOCK);    
     
        /* WINDOWS: */
        if(ioctlsocket(sock, FIONBIO, &nonblocking)<0)
        {
            cout << WSAGetLastError() << endl;
            cerr << "La socket ne peut être rendu non-bloquante" << endl;
            cerr << "On continue quand même avec socket bloquante. Patience." <<endl;
        }
     
        connect(sock, (SOCKADDR *)&sin, sizeof(sin));
     
        if(WSAGetLastError() != WSAEWOULDBLOCK)
        { // LINUX : EINPROGRESS
            cout<<"Erreur 0: "<<WSAGetLastError()<<endl;
            exit(1);
        }
        else
        {
            fd_set readfds;
     
            FD_ZERO(&readfds);
            FD_SET(sock, &readfds); 
     
            struct timeval tv;
            tv.tv_sec = 2;
            tv.tv_usec = 500*1000;
            int r;
     
            r=select(sock+1, &readfds, NULL, NULL, &tv);
     
            if(r<0)
            {
                cout << "Erreur 1: "<< WSAGetLastError() << endl;
                exit(1);
            }
            else if(r==0)
            {
                cout << "Erreur 2: "<< WSAGetLastError() << endl;
                exit(1);
            }
            else
            {
                cout<<"Le proxy a répondu favorablement. Tout semble ok."<<endl; 
            }
        }
     
        WSACleanup();
     
        return 0;
    }
    C'est un peu plus clair comme ça...
    Donc je te conseille de vérifier les valeurs retournées par tes fonctions, comme socket(), connect(), etc...
    Apparament le problème viendrait de select() qui renvoie 0.. mais je connais pas trop cette fonction

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    Voila j'ai en peu amélioré le code:
    -J'ai testé si la fonction "socket" se passait bien.
    -Quant à la fonction "connect", elle me renvoi l'erreur "WSAEWOULDBLOCK" vu que c'est un socket non-bloquant et ça je l'ai testé.
    -Je ne voi pas d'autre fonction à tester.


    Et j'ai toujours l'erreur : "Erreur 4 : 0" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include <iostream>
    #include <winsock2.h>
    #include <fcntl.h>
    #include <sys/fcntl.h>
    #pragma comment(lib, "ws2_32.lib")
    using namespace std;
     
    int main()
    {
        WSADATA WSAData;
        WSAStartup(MAKEWORD(2,2), &WSAData);
     
        SOCKET sock;
        SOCKADDR_IN sin;
        unsigned long nonblocking = 1;
     
        sin.sin_family      	= AF_INET;
        sin.sin_addr.s_addr     = inet_addr("195.175.37.8");
        sin.sin_port       		= htons(80);
     
        if((sock = socket(PF_INET, SOCK_STREAM, 0))<0)
        {
    		cerr <<"Erreur 0: "<< WSAGetLastError() << endl;
    		exit(1);
        }
     
        /* LINUX: */
        //fcntl (sock, F_SETFL, O_NONBLOCK);   
     
        /* WINDOWS: */
        if(ioctlsocket(sock, FIONBIO, &nonblocking)<0)
        {
    		cerr <<"Erreur 1:"<< WSAGetLastError() << endl;
    		exit(1);
        }
     
        connect(sock, (SOCKADDR *)&sin, sizeof(sin));
        if(WSAGetLastError() != WSAEWOULDBLOCK)
        { // LINUX : EINPROGRESS
            cerr <<"Erreur 2: "<< WSAGetLastError() << endl;
            exit(1);
        }
     
        fd_set readfds;
        struct timeval tv;
        tv.tv_sec = 2;
        tv.tv_usec = 500*1000;
        int r;
     
        FD_ZERO(&readfds);
        FD_SET(sock, &readfds);
     
        r=select(sock+1, &readfds, NULL, NULL, &tv);
     
        if(r<0)
        {
            cerr << "Erreur 3: "<< WSAGetLastError() << endl;
            exit(1);
        }
        else if(r==0)
        {
            cerr << "Erreur 4: "<< WSAGetLastError() << endl;
            exit(1);
        }
     
        cout<<"Le proxy a répondu favorablement. Tout semble ok."<<endl;
     
        WSACleanup();
     
        return 0;
    }

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Je ne vois pas l'intérêt de passer les sockets en non-bloquantes.

    Et j'ai toujours l'erreur : "Erreur 4 : 0"
    Normal.
    Le serveur auquel tu te connectes est un serveur HTTP. Selon ce protocole, c'est à toi de parler en premier.
    Boost ftw

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    "Je ne vois pas l'intérêt de passer les sockets en non-bloquantes." ==> Si je n'utilise pas les sockets non-bloquante, il faut environ 20 secondes à mon programme pour me dire que le proxy est mauvais...et c'est beaucoup trop pour ce que je veux faire.

    Que doit-je faire alors pour véirifier si une ip est un proxy ou non ?

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 161
    Points
    161
    Par défaut Re: Socket : vérifier un proxy
    Citation Envoyé par Freed0
    Apparament le problème viendrait de select() qui renvoie 0.. mais je connais pas trop cette fonction
    http://www.google.fr/search?hl=fr&q=man+select
    http://www.linux-france.org/article/man-fr/man2/select-2.html
    VALEUR RENVOYÉE
    En cas de réussite select renvoie le nombre de descrip*
    teurs dans les ensembles, qui peut être nul si le délai de
    timeout a expiré avant que quoi que ce soit d'intéressant
    ne se produise
    . select retourne -1 s'il échoue, auquel
    cas errno contient le code d'erreur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        cout<<"Le proxy a répondu favorablement. Tout semble ok."<<endl;
    J'ai une question : le serveur est censé avoir répondu à quel message ?

  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    "J'ai une question : le serveur est censé avoir répondu à quel message ?" ==> Bonne question :

    Au début j'avais fait ce programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	SOCKET sock;
    	SOCKADDR_IN sin;
    	sin.sin_addr.s_addr    = inet_addr("195.175.37.8");
    	sin.sin_family        = AF_INET;
    	sin.sin_port        = htons(80);
    	sock = socket(AF_INET,SOCK_STREAM,0);
     
    	if (connect(sock, (SOCKADDR *)&sin, sizeof(sin))==-1)    
    	{
    		cout<<"Mauvais proxy"<<endl;
    	}
    	else
    	{
    		cout<<"Bon proxy"<<endl;
    	}
    Il fonctionne très bien sauf qu'il lui faut environ 20 secondes pour qu'il me dise "Mauvais proxy" alors un pote m'a conseillé de faire un socket non-bloquant puis faire un connect et grâce à la fonction select je peux choisir le time-out.

    Pour répondre à "Volume" : je vien de sniffer mon réseau lors de l'exécution de se programme et mon programme demande un ack (accusé de recepetion) et le proxy lui renvoi un ack (si j'ai bien compris )

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 161
    Points
    161
    Par défaut
    1/ Mon pseudo est "VoluNe" avec un N ...

    2/ Le ack renvoyé par le serveur fait parti de l'ouverture d'une connexion TCP. Ce n'est pas un paquet utilisable dans ton programme.

    3/ Si tu veux vérifier qu'une connexion à bien été ouverte, vérifie tout simplement que tu peux envoyer des données. Tu peux vérifier que tu en as reçu, mais le serveur ne va rien t'envoyer spontanément... Tu peux aussi vérifier que la connexion n'a pas été ouverte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    	fd_set writefds, exceptfds;
    	struct timeval tv;
    	tv.tv_sec = 2;
    	tv.tv_usec = 500*1000;
    	int r;
     
    	FD_ZERO(&writefds);
    	FD_SET(sock, &writefds);
     
    	FD_ZERO(&exceptfds);
    	FD_SET(sock, &exceptfds);
     
    	r=select(sock+1, NULL, &writefds, &exceptfds, &tv);
     
    	if (r < 0)
    	{
    		// Erreur
    	}
    	else if (0 == r)
    	{
    		// Temps écoulé
    	}
    	else
    	{
    		if (FD_ISSET(sock, &writefds))
    		{
    			// Connexion ouverte avec succès
    		}
    		else if (FD_ISSET(sock, &exceptfds))
    		{
    			// Port distant fermé
    		}
    		else
    		{
    			// Situation normalement impossible
    		}
    	}

    4/ Ne fais pas de exit(1); sans faire un WSACleanup(); avant.

  15. #15
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    Merci pour tout et désolé pour ton pseudo...

    Dernière petite question : Quel temps doit-je mettre à votre avis pour vérifier si un proxy fonctionne :
    tv.tv_sec = ?;
    tv.tv_usec = ???*1000;

    Je cherche le plus petit temps possible tout en étant sur que le proxy à bien été vérifié !

    [edit]
    Que faut-il déjà mettre au précompilateur pour qu'il compile un code sur Windows et pas sur linux ?
    #if WINDOWS
    //code win
    #else
    //code linux
    #endif
    [/edit]

  16. #16
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par vincent0
    Merci pour tout et désolé pour ton pseudo...

    Dernière petite question : Quel temps doit-je mettre à votre avis pour vérifier si un proxy fonctionne :
    tv.tv_sec = ?;
    tv.tv_usec = ???*1000;

    Je cherche le plus petit temps possible tout en étant sur que le proxy à bien été vérifié !
    Tu peux laisser le temps par défaut (ne pas mettre &tv dans select, la socket passera dans un état d'exception toute seulle au bout de quelques secondes.)
    Si tu cherche le plus petit temps possible, j'aurais tendance à dire de prendre le temps de réponse d'un ping, fois 1,5.

  17. #17
    Membre éprouvé
    Avatar de Freed0
    Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    635
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 635
    Points : 953
    Points
    953
    Par défaut
    Citation Envoyé par vincent0
    [edit]
    Que faut-il déjà mettre au précompilateur pour qu'il compile un code sur Windows et pas sur linux ?
    #if WINDOWS
    //code win
    #else
    //code linux
    #endif
    [/edit]
    Tu veux qu'il compile une certaine partie sur Windows, et une autre partie sur Linux ? Tu peux faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef (WIN32)
        #include <winsock2.h>
        // Autres entêtes nécessaires
    #else
        // Inclure les entêtes pour Linux
        typedef int SOCKET;
        typedef struct sockaddr_in SOCKADDR_IN;
        #define close(a) closesocket(a)
    #endif
    Ca te permet ici d'écrire ton code pour qu'il soit utilisable aussi par Linux. Linux reconnaitra donc SOCKET, closesocket etc...

    Maintenant il reste le code principal. Il n'y a qu'à faire la même chose pour WSAStartup() et c'est tout je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    int main()
    {
    #ifdef (WIN32)
        int err;
        WSADATA WSAData;
        err = WSAStartup(MAKEWORD(2,2), &WSAData);
     
        if(!err)
        {
    #endif
            // Ton code
    #ifdef (WIN32)
            WSACleanup();
        }
    #endif
        return 0;
    }
    Je me permet de citer la source qui n'est autre que le site d'Emmanuel
    http://emmanuel-delahaye.developpez.com/reseaux.htm

    @+

  18. #18
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Août 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    Merci

  19. #19
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ça ne marchera pas sous Win64...

    #if defined(WIN32) || defined(WIN64)


    Enfin, c'est seulement si on tient à ce que le programme puisse être compilé directement pour win64. Dans le cas contraire, on le compile simplement en 32bits et on ne se fatigue pas à changer ses defines...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/01/2012, 00h16
  2. Curl ou socket ? Optimisé pour proxy
    Par tsukasag dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/06/2009, 17h16
  3. Socket irc via proxy
    Par Eltha dans le forum Langage
    Réponses: 2
    Dernier message: 07/07/2008, 23h08
  4. Socket - Vérifier si le serveur est ouvert
    Par plouf3070 dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2008, 16h04
  5. [reseaux] SOCKET - Connection via proxy
    Par Julien_ dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 17/11/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo