Я реализую очень простую программу на FTP-сервере, которая может извлекать и хранить текстовые файлы. мой вопрос, когда запрос клиента ftp говорит файл со следующим "RETR test.txt", как сервер отправляет этот файл ?. Открывает ли он этот текстовый файл, копирует содержимое в буфер и просто отправляет его? Я не уверен, как реализовать это, кто-то может прояснить основную идею?.
редактировать ::
if (strncmp(receive_buffer,"RETR",4)==0) {
sprintf(send_buffer,"150 Opening ASCII mode data connection... \r\n");
printf("<< DEBUG INFO. >>: REPLY sent to CLIENT: %s\n", send_buffer);
bytes = send(ns, send_buffer, strlen(send_buffer), 0);
if (bytes < 0) break;
closesocket(ns);
char temp_buffer2[80];
FILE *fin=fopen("test.txt","r");//open test.txt
while (!feof(fin)){
fgets(temp_buffer2,78,fin);
sprintf(send_buffer,"%s",temp_buffer2);
printf("%s",send_buffer);
if (active==0) {
printf("***active is 0");
send(ns_data, send_buffer, strlen(send_buffer), 0);
}
else {
printf("***active is 1+");
send(s_data_act, send_buffer, strlen(send_buffer), 0);
}
}
fclose(fin);
sprintf(send_buffer,"226 File transfer complete. \r\n");
printf("<< DEBUG INFO. >>: REPLY sent to CLIENT: %s\n", send_buffer);
bytes = send(ns, send_buffer, strlen(send_buffer), 0);
if (active==0 )closesocket(ns_data);
else closesocket(s_data_act);
}
это то, что я сделал, и для команды RETR он открывает test.txt, чтобы попытаться отправить его. Но это приводит к отключению сервера ..