Envoyer la commande au serveur FTP en utilisant les sockets en C

Je suis nouveau à la programmation de socket. Je veux me connecter à mon serveur FTP. Je peux établir la connexion avec succès mais je ne peux pas envoyer d’autres commandes pour l’utilisateur et le mot de passe.

#include  #include  #include  #include  #include  #include  #include  #include  #include  #include  int main(int argc, char *argv[]) { argv[0]="2"; argv[1]="00.00.00.0000"; //my ip int sockfd = 0, n = 0; char recvBuff[1024]; struct sockaddr_in serv_addr; char message[100]="USER ftpuser@domain.com"; argc=2; if(argc != 2) { printf("\n Usage: %s  \n",argv[0]); return 1; } memset(recvBuff, '0',sizeof(recvBuff)); if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("\n Error : Could not create socket \n"); return 1; } memset(&serv_addr, '0', sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(21); serv_addr.sin_addr.s_addr = inet_addr(argv[1]); if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { printf("\n Error : Connect Failed \n"); return 1; } if( send(sockfd , message , strlen(message) , 0)  0) { recvBuff[n] = 0; if(fputs(recvBuff, stdout) == EOF) { printf("\n Error : Fputs error\n"); return 0; } } if(n < 0) { printf("\n Read error \n"); return 0; } return 0; } 

Je reçois ceci:

 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 220-You are user number 1 of 50 allowed. 220-Local time is now 22:05. Server port: 21. 220 You will be disconnected after 15 minutes of inactivity. 

Pourquoi je ne peux pas envoyer de commandes au serveur une fois la connexion établie?

Vous devez terminer chaque commande FTP avec un CRLF. Cela manque dans votre commande USER. Le serveur distant ne traitera pas la commande tant qu’il n’aura pas reçu la nouvelle ligne.

Source: RFC 959