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

R�seau C Discussion :

socket : probl�me avec GetHostByName


Sujet :

R�seau C

  1. #1
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut socket : probl�me avec GetHostByName
    Bonjour, j'essai de programmer avec les sockets sous windows ais j'ai un probl�me avec la fonction GetHostByname de winsock qui me retourne un pointeur NULL � chaque fois que je lui donne mon adresse ip (la "vrai" ou 127.0.0.1)
    J'ai essay� d'autres ip que la mienne mais ca ne amrche aps. Voici un extrait du code au cas ou quelqu'un pourrait m'aider :
    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
     
     
       char ipsource[200];
       char ipdestination[200];
       struct hostent *hotesrc,*hotedest;
     
    ...
       printf("1. Configuration IP\n");
       printf("IP source : ");
       scanf("%199s", ipsource);
       printf("IP destination : ");
       scanf("%199s", ipdestination);
     
       printf("Verification des donnees IP entrees\n");
       hotesrc=gethostbyname(ipsource); /*résoud ip source*/
       hotedest=gethostbyname(ipdestination); /*résoud ip destination*/
     
       /*vérifie info saisies*/
       if(hotesrc==NULL||hotedest==NULL)
       {
           system("PAUSE");
           printf("ERREUR");
           exit(-1);
       }
    Voila, ca nbe marche pas bien que j'ai inclus winsock.h et winsock.lib dans le projet...

  2. #2
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258

  3. #3
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    J'ai d�ja vu ce post.
    Que je donne le DNS ou l'ip ca ne change rine et mon code semble correcte, non ?

  4. #4
    Membre �clair� Avatar de Hypnos
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 87
    Par d�faut
    paix et f�licit�,

    si tu utilises gethostbyname(), tu dois donner une URL, si tu donnes une IP tu dois utiliser gethostbyaddr().

  5. #5
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    Quand je donne apr exemple www.wanadoo.fr ou www.free.fr la fonction me reoturne quand m�me NULL...

  6. #6
    Membre �clair� Avatar de Hypnos
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    87
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 87
    Par d�faut
    1. As-tu initialis� WSAStartup ?

    Sinon tu peux le faire comme �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    WSADATA wsaData;
     
    if(WSAStartup(MAKEWORD(1, 1), &wsaData))
    {
       cout << "WSA n'a pas pu être initialisé." << endl;
       return 0;
    }
    2. utilise ce code pour savoir ce que retourne comme erreur la fonction gethostbyname() :
    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
    hURL = gethostbyname("127.0.0.1");
    if(!hURL)
    {
    	LPTSTR WSAErr;
    	WSAErr = (char *)malloc(256 * sizeof(char));
    	(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
    			NULL,
    			WSAGetLastError(),
    			MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
    			(LPTSTR)&WSAErr,
    			0,
    			NULL);*/
     
    	cout << WSAErr << endl;
    	free(WSAErr);
    	return 0;
    }

  7. #7
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    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
     
       char ipsource[200];
       char ipdestination[200];
     
       ...
       struct hostent *hotesrc,*hotedest;
       struct paquettcp *lepaquet;
       struct sockaddr_in sock;
       int lasocket,i,nbPacket;
     
       WORD wVersionRequested;
       WSADATA WSAData; /* structure WSADATA définie dans winsock.h */
       int err;
     
       wVersionRequested = MAKEWORD(1,1); 	       /* 1.1 version voulu de Winsock */
       err = WSAStartup(wVersionRequested, &WSAData); /* appel de notre fonction */
      					               /* controle d'erreur */
       if(err == 0)	fprintf(stdout, "[*] Winsock a ete initialise avec succes.\n");
       else {
    		fprintf(stderr, "Erreur lors de l'initialisation de Winsock, code d'erreur : %d\n", GetLastError());
    		return(-1);
       }
     
       printf("TCP MAKER\n");
       lepaquet=(struct paquettcp *)calloc(1,sizeof(struct paquettcp));
       printf("1. Configuration IP\n");
       printf("IP source : ");
       scanf("%199s", ipsource);
       printf("IP destination : ");
       scanf("%199s", ipdestination);
       ....
     
       hotesrc=gethostbyname(ipsource);
       hotedest=gethostbyname(ipdestination);
       printf("%s\n", hotesrc->h_name);
       printf("%s\n", hotedest->h_name);
       printf("%s\n", hotesrc->h_addr);
       printf("%s\n", hotedest->h_addr);
       printf("%d\n", hotesrc->h_length);
       printf("%d\n", hotedest->h_length);
    Ceci est une partie de mon code source ou j'observe des choses curieuses. Par exmple, si je lui donne 2 adresses IP au hazar, voici ce qu'il me donne � l'�cran :

    [*] Winsock a ete initialise avec succes.
    TCP MAKER
    1. Configuration IP
    IP source : 145.65.89.127
    IP destination : 82.64.145.78
    IP id : 12
    IP FragOff : 1
    IP ttl : 6
    Verification des donnees IP entrees
    82.64.145.78
    82.64.145.78
    R@�N82.64.145.78
    R@�N82.64.145.78
    4
    4
    Appuyez sur une touche pour continuer...
    Je ne comrpends pas pourquoi il me donne la m�me adresse (destination et pourquoi la copie dans h_addr � bugg� ???

  8. #8
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par d�faut
    C'est normal la fonction gethostbyname prends en argument le nom de l'h�te distant et pas son IP !

    Il te faut utiliser gethostbyaddr(),

    par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    char * IP = "127.0.0.1"
    unsigned int adr = inet_addr(IP);
     
    struct hostent * Host = gethostbyaddr(&adr,sizeof(adr),AF_INET);
    printf("Nom de 127.0.0.1 : %s\n",Host->h_name);
    Voil�

  9. #9
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    POurtant de nombreux sites disent qu'on peut lui donner l'adresse IP ou le nom d'h�te...
    Je vais essayer

  10. #10
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    J'ai v�rifi� pour gethostbyname et que je lui donne l'ip ou le nom d'hote ca donne la m�me chose...

    Autre chose, voici la d�claration de la fonction :
    struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);

    Ainsi, ton code ne passe pas � la compil et j'ai donc essay� ceci, mais ca ne passe pas � l'ex�cution :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
            char * IP = "127.0.0.1";
     
            struct hostent * Host = gethostbyaddr(IP,strlen(IP),AF_INET);
            printf("Nom de 127.0.0.1 : %s\n",Host->h_name);
    Quelle est la syntaxe exact ?

  11. #11
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par d�faut
    La syntaxe que j'ai indiqu� est la syntaxe exacte. Je l'utilise dans de nombreuses applications aussi bien sous windows que sous Linux et ca a toujours march�. Je ne sais pas du tout pourquoi ca ne marche pas chez toi.

    POurtant de nombreux sites disent qu'on peut lui donner l'adresse IP ou le nom d'h�te...
    Je vais essayer
    Ca ne t'es jamais venu � l'id�e que : gethostbyaddr = par l'adresse et gethostbyname = par le nom ?
    Je ne sais pas de quels sites tu parles mais je n'ai jamais vu une telle chose et c'est r�solument faux.


    Veux-tu bien indiquer le code d'erreur � la compilation de mon code ?

    J'utilise sous Linux : gcc et sous Windows : VC++ 6.0

    Yabo.

  12. #12
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    Ca ne t'es jamais venu � l'id�e que : gethostbyaddr = par l'adresse et gethostbyname = par le nom ?
    Je ne sais pas de quels sites tu parles mais je n'ai jamais vu une telle chose et c'est r�solument faux.
    Bien s�r que ca m'es venu � l'id�e mais j'ai vu ca dans plusieurs sites dont je vais rechercher les adresse d'ailleurs.
    En attendant, j'ai chang� de compilo et j'ai pris le m�me que toi : visual C++, j'ai aussi chang� ma version de winsock et j'ai transtyper :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    char * IP = "127.0.0.1"; 
    unsigned int adr = inet_addr(IP); 
     
    struct hostent * Host = gethostbyaddr((char *)&adr,sizeof(adr),AF_INET); 
    printf("Nom de 127.0.0.1 : %s\n",Host->h_name);
    L'erreur venait surement du compilo qui ne me pr�venait pas du transtypage...en tout cas, je te remercie beaucoup et je te tiens au courant pour gethostbyaddr

  13. #13
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par d�faut
    Content d'avoir pu t'aider

  14. #14
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    Je gal�re vraiment l�. J'ai test� ton code tout seul et ca marchait parfaitement mais quand je veux l'int�grer dans mon code, ca bug. En fait, mon but est de faire un forgeur de paquet tcp et voici le d�but de mon code :

    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
    #include <stdio.h>
    #include <stdarg.h>
    #include <winsock2.h>
    #include <string.h>
    #include <errno.h>
     
    extern int errno;
     
    struct pseudohdr
    {
       u_long saddr;
       u_long daddr;
       u_char zero;
       u_long protocol;
       u_long length;
    };
     
    struct tcphdr
    {
        unsigned short sport;      /* port source */
        unsigned short dport;      /* port de destination */
        unsigned int   seqnum;     /* numéro de séquence */
        unsigned int   acknum;     /* accusé de réception */
        unsigned char  dataoffset:4; /* décalage des données (data offset) */
        /* flags */
        unsigned char reserved:6;
        unsigned char  urg:1;
        unsigned char  ack:1;
        unsigned char  psh:1;
        unsigned char  rst:1;
        unsigned char  syn:1;
        unsigned char  fin:1;
        unsigned short windows;    /* fenêtre */
        unsigned short checksum;   /* checksum */
        unsigned short urgpointer; /* pointeur de données urgentes */
    };
     
    struct iphdr
    {
        unsigned char  version:4;  /* version du protocol IP*/
        unsigned char  ihl:4;      /* longeur de l'en tète */
        unsigned char  tos;	       /* type de service */
        unsigned short tot_len;    /* longueur totale du datagramme */
        unsigned short id;	       /* identification */
        unsigned char  M:1;        /* flag M*/
        unsigned char  df:1;       /* flag df*/
        unsigned char  mf:1;       /* flag mf*/
        unsigned short frag_off:13;   /* décalage de fragmentation */
        unsigned char  ttl;	       /* durée de vie du paquet */
        unsigned char  protocol;   /* protocole */
        unsigned short checksum;   /* somme de contrôle */
        unsigned long saddr;      /* adresse IP source */
        unsigned long daddr;      /* adresse IP destinataire */
    };
     
    struct paquettcp
    {
       struct iphdr ippart;
       struct tcphdr tcppart;
       struct pseudohdr pseudopart;
       char data[4096];
    };
     
    unsigned short checksum(u_short *addr, int len);
     
    main()
    {
       int taillepaquet=0;
       char ipsource[200];
       char ipdestination[200];
       unsigned int ipid=0,frago=0,ttl=0,mf=0,df=0;
       unsigned int portsrc=0,portdest=0,flagack,flagurg,flagfin,flagsyn,flagrst,
                    flagpsh,seqnum=0,acknum=0,decdata=0,win=0,urgptr=0;
       char data[4096];
       struct hostent *hotesrc,*hotedest;
       struct paquettcp *lepaquet;
       struct sockaddr_in sock;
       int lasocket,i,nbPacket;
       struct in_addr lasource;
     
       WORD wVersionRequested;
       WSADATA WSAData; 			       /* structure WSADATA définie dans winsock.h */
       int err;
     
       wVersionRequested = MAKEWORD(2,0); 	       /* 1.1 version voulu de Winsock */
       err = WSAStartup(wVersionRequested, &WSAData); /* appel de notre fonction */
      					               /* controle d'erreur */
       if(err == 0)	fprintf(stdout, "[*] Winsock a ete initialise avec succes.\n");
       else {
    		fprintf(stderr, "Erreur lors de l'initialisation de Winsock, code d'erreur : %d\n", GetLastError());
    		return(-1);
       }
     
       printf("TCP MAKER\n");
       lepaquet=(struct paquettcp *)calloc(1,sizeof(struct paquettcp));
       printf("1. Configuration IP\n");
       printf("IP source : ");
       scanf("%199s", ipsource);
       printf("IP destination : ");
       fflush(stdin);
       scanf("%199s", ipdestination);
     
       /*
       printf("IP id : ");
       scanf("%d", &ipid); // identifiant IP du paquet
       printf("IP FragOff : ");
       scanf("%d", &frago);
       printf("IP ttl : ");
       scanf("%d", &ttl);
       */
     
       /*printf("IP Frag DF : ");
       scanf("%d", &df);
       printf("IP Frag MF : ");
       scanf("%d", &mf);*/
     
       sock.sin_addr.s_addr=inet_addr(ipdestination);
       unsigned int adr = inet_addr(ipdestination);
     
       lasource.s_addr=inet_addr(ipsource);
       if((lasource.s_addr=inet_addr(ipsource))==-1)
       {
          printf("Adresse IP non valide");
          return 0;
       }
     
       printf("Verification des donnees IP entrees\n");
       hotesrc=gethostbyaddr((char *)&lasource,sizeof(lasource),AF_INET); /*résoud ip source*/
       hotedest=gethostbyaddr((char *)&sock.sin_addr.s_addr,sizeof(sock.sin_addr.s_addr),AF_INET); /*résoud ip destination*/
     
       //hotesrc=gethostbyname(ipsource);
       //hotedest=gethostbyname(ipdestination);
       printf("%s\n", hotesrc->h_name);
       printf("%s\n", hotedest->h_name);
       printf("%s\n", hotesrc->h_addr);
       printf("%s\n", hotedest->h_addr);
       printf("%d\n", hotesrc->h_length);
       printf("%d\n", hotedest->h_length);
     
       system("PAUSE");
    Comme tu peux le voir Yabo, j'ai suivi ta m�thode mais � l'ex�cution, voici ce que ca donne :
    [*] Winsock a ete initialise avec succes.
    TCP MAKER
    1. Configuration IP
    IP source : 62.45.125.32
    IP destination : 82.67.45.122
    Verification des donnees IP entrees
    vaise-1-82-67-45-122.fbx.proxad.net
    vaise-1-82-67-45-122.fbx.proxad.net
    RC-zvaise-1-82-67-45-122.fbx.proxad.net
    RC-zvaise-1-82-67-45-122.fbx.proxad.net
    4
    4
    Appuyez sur une touche pour continuer...
    Il y a plusieurs probl�mes, d'abord, le fait que'il prenne le m�me nom d'hote h_name et ensuite le h_addr semble incorrect...
    Ca fait un moment que j'ai des probl�mes avec ca et l� ca commence� me taper sur les nerfs ...aidez moi svp

  15. #15
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par d�faut
    Ben oui r�fl�chis un peu

    regarde mon code et regarde le tiens ... Ca n'a absolument rien avoir !

    Il te faut une variable unsigned int MaVal qui soit = inet_addr("127.0.0.1"); (ou un char* contenant l'ip sous cette forme).

    Toi tu as un struct in_addr lasource.

    Donc ton code deviendrait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* ... */
    unsigned int lasource;
    /*...*/
    lasource = inet_addr(ipsource);
    /* ... */
    struct hostent * hotesrc = gethostbyaddr(&lasource,sizeof(lasource),AF_INET);
     
    printf("Nom : %s\n",hotesrc->h_name);

  16. #16
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    J'ai chang� mon code mais ca ne change rine ce qui est logique puisque je lui passe toujours le m�me type d'argument avec les m�mes valeurs :
    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
     
       wVersionRequested = MAKEWORD(2,0); 	       /* 1.1 version voulu de Winsock */
       err = WSAStartup(wVersionRequested, &WSAData); /* appel de notre fonction */
      					               /* controle d'erreur */
       if(err == 0)	fprintf(stdout, "[*] Winsock a ete initialise avec succes.\n");
       else {
    		fprintf(stderr, "Erreur lors de l'initialisation de Winsock, code d'erreur : %d\n", GetLastError());
    		return(-1);
       }
     
       printf("TCP MAKER\n");
       lepaquet=(struct paquettcp *)calloc(1,sizeof(struct paquettcp));
       printf("1. Configuration IP\n");
       printf("IP source : ");
       scanf("%199s", ipsource);
       printf("IP destination : ");
       fflush(stdin);
       scanf("%199s", ipdestination);
     
       /*
       printf("IP id : ");
       scanf("%d", &ipid); // identifiant IP du paquet
       printf("IP FragOff : ");
       scanf("%d", &frago);
       printf("IP ttl : ");
       scanf("%d", &ttl);
       */
     
       /*printf("IP Frag DF : ");
       scanf("%d", &df);
       printf("IP Frag MF : ");
       scanf("%d", &mf);*/
     
       //sock.sin_addr.s_addr=inet_addr(ipdestination);
       unsigned int adr = inet_addr(ipdestination);
     
       if((lasource=inet_addr(ipsource))==-1||adr==-1)
       {
          printf("Adresse IP non valide");
          return 0;
       }
     
       printf("Verification des donnees IP entrees\n");
       hotesrc=gethostbyaddr((char *)&lasource,sizeof(lasource),AF_INET); /*résoud ip source*/
       hotedest=gethostbyaddr((char *)&adr,sizeof(adr),AF_INET); /*résoud ip destination*/
     
       //hotesrc=gethostbyname(ipsource);
       //hotedest=gethostbyname(ipdestination);
       printf("%s\n", hotesrc->h_name);
       printf("%s\n", hotedest->h_name);
       printf("%s\n", hotesrc->h_addr);
       printf("%s\n", hotedest->h_addr);
       printf("%d\n", hotesrc->h_length);
       printf("%d\n", hotedest->h_length);
     
       system("PAUSE");
    Le probl�me doit encore venir d'autre part. Est ce que j'ai fait une autre erreur ? pkoi me donne t-il les m�mes r�sultats pour les 2 adresses :
    [*] Winsock a ete initialise avec succes.
    TCP MAKER
    1. Configuration IP
    IP source : 82.64.125.45
    IP destination : 82.64.124.65
    Verification des donnees IP entrees
    lns-th2-8-82-64-124-65.adsl.proxad.net
    lns-th2-8-82-64-124-65.adsl.proxad.net
    R@|Alns-th2-8-82-64-124-65.adsl.proxad.net
    R@|Alns-th2-8-82-64-124-65.adsl.proxad.net
    4
    4
    Appuyez sur une touche pour continuer...

  17. #17
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par d�faut
    Bon je vais t'�crire un code mais sans le tester pour que tu comprennes :

    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
     
    unsigned int IpSource_Bin;
    unsigned int IpDest_Bin;
     
    char * IpSource_Char = (char *)calloc(32,sizeof(char));
    char * IpDest_Char = (char *)calloc(32,sizeof(char));
     
    printf("Entrez l'ip source : \n");
    read(0,IpSource_Char,32);
    printf("\nEntrez l'ip dest : \n");
    read(0,IpDest_Char,32);
     
    IpSource_Bin = inet_addr(IpSource_Char);
    IpDest_Bin = inet_addr(IpDest_Char);
     
    if(IpSource_Bin == -1 || IpDest_Bin == -1)
    {
           printf("Erreur\n");
           exit(-1);
    }
     
    struct hostent * Source_Info = gethostbyaddr(&IpSource_Bin,sizeof(IpSource_Bin),AF_INET);
    struct hostent * Dest_Info = gethostbyaddr(&IpDest_Bin,sizeof(IpDest_Bin),AF_INET);
     
    if(Source_Info == NULL || Dest_Info == NULL)
    {
         printf("Erreur\n");
         exit(-1);
    }
     
    printf("Nom source : %s\n",Source_Info->h_name);
    printf("Nom dest : %s\n",Dest_Info->h_name);
    J'ai pas test� le code mais je l'ai relu et il ne devrait pas y avoir de prob.

    Voil�

  18. #18
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    C'est le m�me probl�me avec ton code et je ne comprends pas non plus pourquoi
    J'ai juste changer 2 lignes avec char * :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    struct hostent * Source_Info = gethostbyaddr((char *)&IpSource_Bin,sizeof(IpSource_Bin),AF_INET);
    Mais il donne 2 fois la m�me chose ... :

  19. #19
    Membre tr�s actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Par d�faut
    [*] Winsock a ete initialise avec succes.
    TCP MAKER
    1. Configuration IP
    IP source : 82.64.125.45
    IP destination : 82.64.124.65
    Verification des donnees IP entrees
    lns-th2-8-82-64-124-65.adsl.proxad.net
    lns-th2-8-82-64-124-65.adsl.proxad.net
    R@|Alns-th2-8-82-64-124-65.adsl.proxad.net
    R@|Alns-th2-8-82-64-124-65.adsl.proxad.net
    4
    4
    Appuyez sur une touche pour continuer...
    Ca serait pas parce'que tu lui a mit la m�me ip source et la m�me ip destination ?

  20. #20
    Membre �clair� Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Par d�faut
    [*] Winsock a ete initialise avec succes.
    TCP MAKER
    1. Configuration IP
    IP source : 82.64.123.56
    IP destination : 82.65.153.33
    Verification des donnees IP entrees
    lns-p19-16-82-65-153-33.adsl.proxad.net
    lns-p19-16-82-65-153-33.adsl.proxad.net
    RA�!lns-p19-16-82-65-153-33.adsl.proxad.net
    RA�!lns-p19-16-82-65-153-33.adsl.proxad.net
    4
    4
    Appuyez sur une touche pour continuer...
    Non pas du tout...regarde avec des adresses diff�rentes...essai de le compiler et tu verras
    D'ailleurs, le "RA�!", je sais pas non plus d'ou il vient ?

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. [SOCKET] Probl�me avec select()
    Par PaloPalo dans le forum Linux
    R�ponses: 4
    Dernier message: 01/12/2011, 16h34
  2. R�ponses: 4
    Dernier message: 03/04/2009, 03h10
  3. probl�me avec des sockets
    Par ddii dans le forum R�seau
    R�ponses: 10
    Dernier message: 15/11/2005, 16h53
  4. [Win32] Probl�me avec les sockets
    Par mickael777 dans le forum MFC
    R�ponses: 3
    Dernier message: 12/08/2005, 12h15
  5. [socket] Probl�me avec les options
    Par gangsoleil dans le forum D�veloppement
    R�ponses: 3
    Dernier message: 13/07/2005, 14h11

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