Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с ClientSocket, Многоразовая обработка происходит 
:(
    Опции темы
bronenos
Дата 4.7.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

void __fastcall TCForm::CRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
  AnsiString* response = Split(Socket->ReceiveText(), "\r\n");
  Area->Lines->Add(response[0]);
}

Вот это - обработчик события onRead у ClientSocket
Он вызывается около трех раз и я не понимаю, почему
Получаю содержимое текстового файла у себя на сайте

Плюс ко всему, response[0] не содержит в себе никаких знаков, вот функция Split
Код

AnsiString* Split(AnsiString input, AnsiString sep)
{
  AnsiString result[256];
  int pos=1, size=0;

  while(true)
  {
    pos = AnsiPos(sep, input);

    if (pos == 0)
    {
      result[size++] = input;
      break;
    }
    else
      result[size++] = input.SubString(1, pos-1);

    input.Delete(1, pos-1+sep.Length());
    if (pos == 0) break;
  }

  return result;
}


в чем можеь быть проблема?
PM MAIL   Вверх
bronenos
Дата 5.7.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я кажись понял, что он читает блоками, и поэтому onRead выхывается при каждом чтении (словно fgets при работе с файлами), тогда вопрос другой - как узнать, когда наступил конц чтения? пока я делаю буферизацию так сказать и потом все полностью выводится, как можно сделать проще?
PM MAIL   Вверх
ptr
Дата 5.7.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bronenos, показывай весь код.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
dumb
Дата 5.7.2007, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(bronenos @  5.7.2007,  09:32 Найти цитируемый пост)
как узнать, когда наступил конц чтения?

tcp - потоковый протокол, в нем нет начала/конца. поэтому сначала передавай длину данных, а потом сами данные. либо вводи значения, обозначающие начало-конец...
PM MAIL   Вверх
bronenos
Дата 6.7.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я не передаю данные, а получаю их...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




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


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

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