bonjour à tous, une fois encore j'en appelle à votre savoir,
(mon ami Google ne sait pas, la RFC n'est pas super claire et malheureusement le man non plus).

Voila mon probleme, je souhaiterai me connecter sur un serveur via le protocole IMAP...(en C grace aux sockets).
Les gethostbyname(), socket(), connect(), send() et recv() fonctionnent.
Le petit souci que je rencontre c'est que je ne sais pas comment formater ma requete:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
a1 login 'user' 'password'
pour que le serveur l'interprete correctement.
Pour l'instant celui-ci me repond toujours la même chose, que l'identifiant et le mot de passe soient corrects ou pas !
Je me permets de joindre mon code(il sera certainement plus parlant):
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
 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
 
#include "portablesocket.h"
 
#define PORT 143
 
int main (int  argv, char* argc[]){
 
	if (argv < 2)
	{
	fprintf(stderr,"\n\t\aERROR use as %s 'serverhost'\n",argc[0]);
	exit(EXIT_FAILURE);
	}
 
 SOCKADDR_IN SERVER;
 struct hostent* IP;
 SOCKET sock;
 int retour;
 char Buffer[128]="a1 login identifiant password";
 char Buffer2[128]="a2 select inbox";
 
 	if ((IP = gethostbyname(argc[1])) == NULL)
 	{
 	printf("gethostbyname() failed\n");
 	exit(EXIT_FAILURE);
 	} 
 
 
 
 
 
 SERVER.sin_family = AF_INET;
 SERVER.sin_addr = *((struct in_addr *)IP->h_addr);
 SERVER.sin_port = htons(PORT);
 
 printf("tentative de connexion IMAP sur %s : %d ...\n", IP->h_name, PORT);
 sock=socket(AF_INET, SOCK_STREAM, 0);
 
	if (sock == INVALID_SOCKET) 
	{
	printf("socket() failed\n");
	exit(EXIT_FAILURE);
	}
 
	if (connect(sock, (SOCKADDR*)&SERVER, sizeof(SOCKADDR) ) == SOCKET_ERROR)
	{
	printf("connect() failed\n");
	exit(EXIT_FAILURE);
	}
 
 printf("connexion IMAP etablie sur %s : %d !\n", IP->h_name, PORT);
 
 retour = send(sock,Buffer,sizeof(Buffer),0 );
 	if (retour == SOCKET_ERROR)
	{
	printf("send() failed\n");
	}
 printf("paquet %s envoye\n",Buffer);
 
 retour = recv(sock,Buffer,sizeof(Buffer),0 );
	if (retour == SOCKET_ERROR)
	{
	printf("recv() failed\n");
	}
 printf("reponse : %s\n",Buffer);
 
 
 
 retour = send(sock,Buffer2,sizeof(Buffer2),0 );
 	if (retour == SOCKET_ERROR)
	{
	printf("send() failed\n");
	}
 printf("paquet %s envoye\n",Buffer2);
 
 retour = recv(sock,Buffer2,sizeof(Buffer2),0 );
	if (retour == SOCKET_ERROR)
	{
	printf("recv() failed\n");
	}
 printf("reponse : %s\n",Buffer2);
 
 return(EXIT_SUCCESS);
}
Merci par avance a tout ceux qui pourrait m'apporter une solution.