Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WinSock, передача файлов, клиент пишет в два раза 
:(
    Опции темы
winsockuser
Дата 18.5.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 18.5.2009

Репутация: нет
Всего: нет



Всем доброго времени суток.
Возникла проблема при написании клиента на delphi 2009 для получения файлов. Цель - получить от сервера файл(не текст, как правило приложение\мп3). Сам сервер написан на перле и гарантированно работает, проверено никсовым клиентом на том же перле. Обязательна реализация на WinSock, никакие иные сетевые компоненты неприемлемы. Пытаюсь использовать следующий код:

Код
      

       ....

       // outy - хендл файла, в который надо произвести запись,
       // открытый через AssignFile и ReWrite. тип - file of char

      while (iret<>0) do
      begin
        iret := recv(sServerListen, bigrecy, length(bigrecy), 0);

      iRet := 1;
      while (iRet<>0) do
      begin
        iRet := Recv(sServerListen, BigRecy, length(BigRecy), 0);
        if (iRet = 0) then
         break;
        BlockWrite(outy, bigrecy, iret, counter);
      end;

      close (Outy);
      Stringy := '';
    end;

    ...


Проблема заключается в том, что этот код пишет примерно в два раза больше данных, чем передается на самом деле. Причем при проверке на текстовых файлах выяснилось, что пишется непонятно что в совершенно невнятной кодировке наравне с нормальными данными (т.е. кусок текста и кусок кривой кодировки). Подскажите пожалуйста, в чем может быть проблема, и как, соответственно, ее исправить?

Это сообщение отредактировал(а) winsockuser - 18.5.2009, 21:38
PM MAIL   Вверх
Matematik
Дата 18.5.2009, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 24
Всего: 50



Цитата(winsockuser @  18.5.2009,  21:37 Найти цитируемый пост)
пишется непонятно что в совершенно невнятной кодировке наравне с нормальными данными

Насечет этого ничего не скажу.
Есть двазамечания:
Зачем два цикла?
+
Recv() возвращает кол-во прочитанных байт
или 0 (ноль) - если соединение закрыто
или SOCKET_ERROR при ошибке
т.е. проверки if (iRet = 0) then недостаточно



Это сообщение отредактировал(а) Matematik - 18.5.2009, 23:31
PM MAIL WWW ICQ   Вверх
dvamaster
Дата 19.5.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 2
Всего: 10



Delphi 2009 использует кодировку Unicode, тип Char для передачи байтовых данных неприменим, используй AnsiChar


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.