В школе я получил задание написать программу FTP на языке C (для Linux).Я получил все основные функции, работающие в кратчайшие сроки (ls, cd), но у меня проблемы с передачей файлов.Я использую sendfile для отправки файла через сокет следующим образом:
int fd = open(temp, O_RDONLY);
int rc = sendfile (client_fd, fd, &offset, statbuf.st_size);
Не могу понять, как получить этот файл на стороне клиента.Я попробовал это для отладки следующим образом:
while( (i = read(sock, message, MSG_LEN - 1)) > 0 ) {
message[i] = '\0';
printf("%s", message);
}
Это хорошо работает при печати текстовых файлов, но если я пытаюсь, например, отправлять двоичные файлы, он просто печатает начало двоичного файлаи зависает в части read () (поскольку я думаю, что с сервера ничего не приходит).
Я ценю любые предложения!