Здравствуйте! Есть программа фтп-клиент, работает через консоль под Linux, после подключения к серверу и команды get происходит скачивание файла через сокет-интерфейс, ниже приведен код функции, где происходит скачивание. Почему-то файл скачивается большего размера, чем есть на сервере. С чем это может быть связано?
void recieve_answer(struct sockaddr_in *data_sa, int mode, char *filename)
{
int data_socket = socket(AF_INET, SOCK_STREAM, 0);
int res = connect(data_socket, (struct sockaddr *)data_sa, sizeof(*data_sa));
if (res < 0)
{
perror("");
return;
}
char buf[BUF_SIZ];
if (mode == RECIEVE_LIST)
{
while(recv(data_socket, buf, BUF_SIZ, 0) > 0)
{
printf("%s", buf);
}
printf("\n");
}
if (mode == RECIEVE_FILE)
{
int fd = open(filename, O_WRONLY | O_CREAT, S_IRUSR);
int recv_bytes;
while((recv_bytes = recv(data_socket, buf, BUF_SIZ, 0)) > 0)
{
write(fd, buf, recv_bytes);
}
close(fd);
}
close(data_socket);
}