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));