我正在使用套接字在Linux c中创建一个FTP客户端,当我尝试发送,接收或列出时,我陷入困境。
登录服务器,我可以设置TYPE
目录,但每次发送STOR
命令我都会
“425无法打开数据连接”
我还尝试使用PASV
设置端口,但我得到了同样的错误。
我正在使用此代码发送每个命令:
printf("send command\n");
bzero(buffer,256);
sprintf(buffer,"STOR FTP_ENVIA.txt\r\n");
n = write(sockfd,buffer,strlen(buffer));
if (n < 0){
error("ERROR writing to socket");
}
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0){
error("ERROR reading from socket");
}else{
i=0;
while(i<4){ //gets response code (example "220 ")
ftp_code[i]=buffer[i];
i++;
}
if(' ' == ftp_code[3]){
fprintf(ficheiro20, "Space found :%s\n",ftp_code);
fprintf(ficheiro20, "OK SEND:%s\n",buffer);
printf("SEND\n");
}else{
// because the responde code has '-'
ftp_code[3]=' ';
ftp_code_aux[0]='l';
ftp_code_aux[1]='i';
ftp_code_aux[2]='x';
ftp_code_aux[3]='o';
while(0 != strcmp(ftp_code,ftp_code_aux)){
bzero(buffer,256);
n = read(sockfd,buffer,255);
if (n < 0){
error("ERROR reading from socket");
}else{
// descodifica o código enviado pelo servidor ftp
i=0;
while(i<4){
ftp_code_aux[i]=buffer[i];
i++;
}
fprintf(ficheiro20, "respostas:%s\n",buffer);
}
}
}
}