Bonjour à tous.
Alors voilà j'ai voulu envoyer un fichier sur un FTP de free en utilisant les sockets sous Windows Vista.
Le problème c'est que la commande LIST n'a pas l'air de marcher et lorsque j'utilise STOR nom_du_fichier, j'ai un temps d'attente assez long, 30 secondes avant que le programme continu.
Je fais une requête puis j'affiche le message de retour du serveur.
Et quand j'utilise la commande STOR, le message de retour n'a pas l'air d'être celui du serveur car c'est : STOR nom_de_fichier.
Est-ce que quelqu'un pourrait m'aider sur la façon d'envoyer un fichier sur un FTP ?

Voici mon code (je veux juste faire marcher l'envoie de fichier avant d'améliorer le 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
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
    WSADATA WSAData;
    int erreur = WSAStartup(MAKEWORD(2,0), &WSAData);
 
    SOCKADDR_IN sin;
    SOCKET sock;
    HOSTENT *hote;
    IN_ADDR adresse;
 
    char buffer[1024];
 
    if (!erreur)
    {
         hote = gethostbyname("monsite.free.fr");
         memcpy(&adresse, hote->h_addr, hote->h_length);
         sock = socket(AF_INET, SOCK_STREAM, 0);
         sin.sin_addr = adresse;
         sin.sin_family = AF_INET;
         sin.sin_port = htons(21);
 
     if (connect(sock, (SOCKADDR *)&sin, sizeof(sin)) != SOCKET_ERROR)
     {
 
            printf("Connexion à %s sur le port %d\n", inet_ntoa(sin.sin_addr), htons(sin.sin_port));         
 
            strcpy(buffer, "USER user\r\n");
            send(sock, buffer, strlen(buffer), 0);
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer);  
 
            strcpy(buffer, "PASS pass\r\n");
            send(sock, buffer, strlen(buffer), 0);   
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer); 
 
            strcpy(buffer, "CWD /\r\n");
            send(sock, buffer, strlen(buffer), 0);
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer); 
 
            strcpy(buffer, "PWD\r\n");
            send(sock, buffer, strlen(buffer), 0);
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer);    
 
            strcpy(buffer, "TYPE A\r\n");
            send(sock, buffer, strlen(buffer), 0);
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer);   
 
            strcpy(buffer, "PASV\r\n");
            send(sock, buffer, strlen(buffer), 0);
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer);  
 
            strcpy(buffer, "STOR blague.txt\r\n");
            send(sock, buffer, strlen(buffer), 0);
            recv(sock, buffer, sizeof(buffer), 0);
            printf("\n%s", buffer);
 
     }
   }
 
  closesocket(sock);
  WSACleanup();
 
  printf("\n\nTermine");
  getchar();
  return 0;
}
PS : Je sais que STOR ne fait que créer un fichier sur le serveur de taille 0 octet mais même cela ne marche pas...

Merci d'avance.