Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Программа фтп-клиент скачивает файл с большим размером, чем он есть сервере  (Прочитано 692 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Revan1989

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Здравствуйте! Есть программа фтп-клиент, работает через консоль под 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);
}

Оффлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5589
  • Все по палатам!
    • Просмотр профиля
Revan1989,
Сравни для начала файлы, может понятно будет по отличию.
Извините, я все еще учусь

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6166
    • Просмотр профиля
Revan1989,

выводи информацию о размере в байтах,

и md5/sha неплохо было бы подсчитать.

Оффлайн san-alex

  • Забанен
  • Старожил
  • *
  • Сообщений: 7726
  • Ex-CNC programmer
    • Просмотр профиля
Может, на сервере и на клиенте показывает в разных единицах? Типа MB и MiB. Посмотри размер в байтах.

 

Страница сгенерирована за 0.043 секунд. Запросов: 25.