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. #21
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Envois moi le fichier source de ton projet à mon mail (dans mon profil).

    Je vais regarder ce que je peux faire

  2. #22
    Membre habitué 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
    Points : 194
    Points
    194
    Par défaut
    C'est bien yabo@programmer.net ton mail ?
    J'ai essayé et j'ai recut un mailer daemon, j'essais encore une fois...
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  3. #23
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    J'ai bien reçu et je regarde tes sources

  4. #24
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Bon j'ai abandonné la correction de ton code (trop buggé et pas bien écrit ).
    J'ai donc tout reprit à zéro et j'ai écrit un code, bon j'avoue ca m'a donner du fil à retordre (je suis dessus depuis 19:09 et il est 4:20 et j'ai fini le code operationnel ).

    Si tu ne comprends pas un truc fait moi signe (quoique là je vais faire un gros dodo )

    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
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
     
    #include <stdio.h>
    #include <stdarg.h>
    #include <winsock2.h>
    #include <string.h>
    #include <errno.h>
     
    #pragma comment(lib, "ws2_32.lib")
     
    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];
    };
     
    struct HostInfo //structure pour chaque hôte (source & dest)
    {
    	char * Nom;
    	char * IP;
    	short  Len;
    	short  Type;
    };
     
    unsigned short checksum(u_short *addr, int len);
     
    int main(int argc,char ** argv)
    {
     
    	/* Toutes les variables déclarées (plus clair de cette façon je trouve) */
     
    	int taillepaquet = 0;
    	int lasocket     = 0;
    	int i            = 0;
    	int nbPacket     = 0;
     
    	unsigned int ipid     = 0;
    	unsigned int frago    = 0;
    	unsigned int ttl      = 0;
    	unsigned int mf       = 0;
    	unsigned int df       = 0;
    	unsigned int portsrc  = 0;
    	unsigned int portdest = 0;
    	unsigned int flagack  = 0;
    	unsigned int flagurg  = 0;
    	unsigned int flagfin  = 0;
    	unsigned int flagsyn  = 0;
    	unsigned int flagrst  = 0;
    	unsigned int flagpsh  = 0;
    	unsigned int seqnum   = 0;
    	unsigned int acknum   = 0;
    	unsigned int decdata  = 0;
    	unsigned int win      = 0;
    	unsigned int urgptr   = 0;
     
    	unsigned int Ip_Source_Bin = 0;
    	unsigned int Ip_Dest_Bin   = 0;
     
    	char * data          = (char *)calloc(4096,sizeof(char));
    	char * ipsource		 = (char *)calloc(32,sizeof(char));
    	char * ipdestination = (char *)calloc(32,sizeof(char));
    	char ** Temp_Addr	 = NULL;
     
    	struct sockaddr_in sock;
    	struct paquettcp   * lepaquet     = (struct paquettcp *)calloc(1,sizeof(struct paquettcp));
    	struct hostent     * tSource_Info = (struct hostent *)calloc(1,sizeof(struct hostent));
    	struct hostent     * tDest_Info   = (struct hostent *)calloc(1,sizeof(struct hostent));
    	struct hostent     * Temp_Info    = NULL;
     
    	struct HostInfo	   * Source_Info  = (struct HostInfo *)calloc(1,sizeof(struct HostInfo));
    	struct HostInfo    * Dest_Info    = (struct HostInfo *)calloc(1,sizeof(struct HostInfo));
     
    	Source_Info->IP                   = (char *)calloc(32,sizeof(char));
    	Dest_Info->IP					  = (char *)calloc(32,sizeof(char));
     
     
    	WSADATA WSAData;      
     
    	if(!WSAStartup(MAKEWORD(2,0), &WSAData))
    	{
    		printf("[*] Winsock a ete initialise avec succes.\n");
    	}
    	else
    	{
    		printf("Erreur lors de l'initialisation de Winsock, code d'erreur : %d\n", GetLastError());
    		system("PAUSE");
    		return(-1);
    	}
     
    	printf("TCP MAKER\n");
        printf("1. Configuration IP\n");
        printf("IP source : ");
        scanf("%32s", ipsource);
    	fflush(stdin);
        printf("IP destination : ");
        scanf("%32s", ipdestination);
    	fflush(stdin);
    	printf("Verification des donnees IP entrees\n");
     
    	Ip_Source_Bin = inet_addr(ipsource);
    	Ip_Dest_Bin   = inet_addr(ipdestination);
     
    	if(Ip_Source_Bin == -1 || Ip_Dest_Bin == -1)
    	{
    		printf("Erreur -- IP invalides\n");
    		system("PAUSE");
    		return(-1);
    	}
     
    	/* 
    	Bon en gros le trip c'est d'utiliser une variable temporaire (Temp_Info) 
    	et ensuite d'utiliser la structure tSource_Info pour finalement tout copier dans 
    	Source_Info
    	*/
     
    	Temp_Info = gethostbyaddr((char *)&Ip_Source_Bin,sizeof(Ip_Source_Bin),AF_INET);
    	if(Temp_Info == NULL)
    	{
    		printf("Adresse source invalide\n");
    		system("PAUSE");
    		return(-1);
    	}
    	memcpy(tSource_Info,Temp_Info,sizeof(struct hostent));
    	Temp_Addr = tSource_Info->h_addr_list;
    	Source_Info->Nom = (char *)calloc(strlen(tSource_Info->h_name)+1,sizeof(char));
    	strncpy(Source_Info->Nom,tSource_Info->h_name,strlen(tSource_Info->h_name));
    	strncpy(Source_Info->IP,(char *)inet_ntoa(*(struct in_addr *) *Temp_Addr),32);
    	Source_Info->Len  = tSource_Info->h_length;
    	Source_Info->Type = tSource_Info->h_addrtype; 
     
    	Temp_Info = NULL;
    	Temp_Addr = NULL;
     
    	Temp_Info = gethostbyaddr((char *)&Ip_Dest_Bin,sizeof(Ip_Dest_Bin),AF_INET);
    	if(Temp_Info == NULL)
    	{
    		printf("Adresse dest invalide\n");
    		system("PAUSE");
    		return(-1);
    	}
    	memcpy(tDest_Info,Temp_Info,sizeof(struct hostent));
    	Temp_Addr = tDest_Info->h_addr_list;
    	Dest_Info->Nom = (char *)calloc(strlen(tDest_Info->h_name)+1,sizeof(char));
    	strncpy(Dest_Info->Nom,tDest_Info->h_name,strlen(tDest_Info->h_name));
    	strncpy(Dest_Info->IP,(char *)inet_ntoa(*(struct in_addr *) *Temp_Addr),32);
    	Dest_Info->Len  = tDest_Info->h_length;
    	Dest_Info->Type = tDest_Info->h_addrtype;
     
    	Temp_Info = NULL;
    	Temp_Addr = NULL;
     
    	printf("Nom source : %s\n", Source_Info->Nom);
        printf("Nom dest   : %s\n", Dest_Info->Nom);
        printf("Adresse source : %s\n", Source_Info->IP);
        printf("Adresse dest   : %s\n", Dest_Info->IP);
        system("PAUSE");
     
    	/* Ici tu mets tout ton code pour la gestion de tes packets TCP */
     
    	/* Libération massive de mémoire :) (fin du programme)*/
     
    	free(data); data = NULL;
    	free(ipsource); ipsource = NULL;
    	free(ipdestination); ipdestination = NULL;
    	free(lepaquet); lepaquet = NULL;
    	free(tSource_Info); tSource_Info = NULL;
    	free(tDest_Info); tDest_Info = NULL;
    	free(Source_Info); Source_Info = NULL;
    	free(Dest_Info); Dest_Info = NULL;
     
    	return 0;
    }
    En sortie j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [*] Winsock a ete initialise avec succes.
    TCP MAKER
    1. Configuration IP
    IP source : 212.27.35.66
    IP destination : 127.0.0.1
    Verification des donnees IP entrees
    Nom source : web2-1.pro.proxad.net
    Nom dest   : yabohost1
    Adresse source : 212.27.35.66
    Adresse dest   : 127.0.0.1
    Appuyez sur une touche pour continuer...
    Voilà j'espère que le prob est résolu

  5. #25
    Membre habitué 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
    Points : 194
    Points
    194
    Par défaut
    J'ai qu'un mot à dire : super , c'est du bon boulot...moi qui galérait dessus depuis un moment, j'ai toujours pas compris pourquoi mon code ne marchait pas mais je vais regarder de très près pour finir mon programme et peut être que je pourrais te le dire.
    En tout cas, merci beaucoup pour ton aide et je dois dire que ton programme est très bien fait (commentaire, indentation,...)
    Bien joué et encore merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  6. #26
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 258
    Points : 288
    Points
    288
    Par défaut
    Ca me fait plaisir de pouvoir t'aider

    Pense à mettre le sujet [RESOLU] (bouton en bas à gauche de la page).


    Bon courage pour la suite

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

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

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