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 :

Comment remplir une tres longue chaine de caractere ?


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Par défaut Comment remplir une tres longue chaine de caractere ?
    Salut tout le monde,

    Je voudrais écrire un petit programme qui permet de récuperer des mails sur un serveur pop3 grâce aux sockets.
    J'ai commencé a l'écrire, mais je me trouve confronté a deux probleme:

    1) Comment récupérer le mail dans une chaine de caracteres, alors qu'on ne connait pas le nombre de caractères du mail ?

    2)Est ce que la taille est limite car au bout d'un moment j'ai beau mettre un grand nombre pour mon tableau, il ne se remplit plus...

    Est-ce que quelqu'un pourrait me dire comment on doir procéder ?

    Merci d'avance
    stan

    PS : le debut du script

    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
     
    #define PACKET_SIZE 256
    #define PORT 110
     
    main()
    {
     
    char *server_name = "";
     
    char *user= "";
    char *password= "";
     
    int socket_to_serveur,ret;
            struct sockaddr_in serveur;
            struct hostent *hp;
            char bufw[PACKET_SIZE];
            char bufr[PACKET_SIZE];
            char bufe[PACKET_SIZE];
            //bzero(bufw, PACKET_SIZE);
      //bzero(bufr, PACKET_SIZE);
            //bzero(bufe,PACKET_SIZE);
            socket_to_serveur=socket(AF_INET,SOCK_STREAM,0);
            hp=gethostbyname(server_name);
            serveur.sin_family=AF_INET;
            bcopy((char *)hp->h_addr,(char *)&serveur.sin_addr,hp->h_length);
            serveur.sin_port=htons(PORT);
            ret=connect(socket_to_serveur,(struct sockaddr *)&serveur,sizeof(serveur));
     
    /*ON lit le message d'accueil*/
    read(sprintf("Resultat %s \n",bufr);
     
     
    /*On entre l'identifiant*/
    sprintf(bufw,"USER %s\r\n",user);
    printf("L'identifiant est %s",bufw);
    write(socket_to_serveur,bufw,strlen(bufw));
    read(socket_to_serveur,bufr,sizeof(bufr));
    printf("Resultat %s \n",bufr);
     
    /*On entre le mot de passe*/
    sprintf(bufe,"PASS %s\r\n",password);
    printf("avant d'envoyer mot de passe %s \n",bufe);
     write(socket_to_serveur,bufe,strlen(bufe));
    read(socket_to_serveur,bufr,sizeof(bufr));
    printf("Resultat %s \n",bufr);
     
    /*On entre le mot de passe*/
    sprintf(bufe,"LIST\r\n");
    printf("avant d'envoyer mot de passe %s \n",bufe);
    // write(socket_to_serveur,bufe,sizeof(bufe));
     write(socket_to_serveur,bufe,strlen(bufe));
    read(socket_to_serveur,bufr,sizeof(bufr));
    printf("Resultat %s \n",bufr);
     
    sprintf(bufe,"RETR 2\r\n");
    printf("avant d'envoyer mot de passe %s \n",bufe);
    // write(socket_to_serveur,bufe,sizeof(bufe));
     write(socket_to_serveur,bufe,strlen(bufe));
     read(socket_to_serveur,bufr,sizeof(bufr));
    printf("Resultat %s \n",bufr);
    ocket_to_serveur,bufr,sizeof(bufr));

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Tout est .
    Cordialement.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut
    en principe tu fais juste une boucle while le tant que ton buffer est différent de NULL.... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(buff!=NULL)
    {
    read(...);
    }
    Je te donne plus de détail demain matin, là j'ai pas ce qu'il faut sous la main...


  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par stan314 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #define PACKET_SIZE 256
    #define PORT 110
     
    main()
    {
     
    char *server_name = "";
     
    char *user= "";
    char *password= "";
    Bah, tu définis des pointeurs sur char, mais ils pointent sur une chaine vide...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            char bufw[PACKET_SIZE];
            char bufr[PACKET_SIZE];
            char bufe[PACKET_SIZE];
    On ne peut pas définir des objets de taille importante en mémoire automatique. Soit on les définis en mémoire statique, soit en mémoire allouée (malloc() etc.).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    read(sprintf("Resultat %s \n",bufr);
    Ceci n'a aucun sens. Relis la doc de sprintf()...

Discussions similaires

  1. Comment écrire une très longue variable dans un fichier ?
    Par hijodelanoche dans le forum Langage
    Réponses: 8
    Dernier message: 17/11/2005, 17h12
  2. comment remplir une table
    Par donny dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/07/2005, 12h22
  3. Comment remplire une CList ?
    Par stof dans le forum MFC
    Réponses: 23
    Dernier message: 02/02/2005, 18h33
  4. [SWT] Comment remplir une Table ?
    Par simon77 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 23/08/2004, 11h31
  5. Réponses: 4
    Dernier message: 18/05/2004, 14h58

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