Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2015, 11:43   #1
NEoMASTERR
Форумчанин
 
Аватар для NEoMASTERR
 
Регистрация: 22.12.2010
Сообщений: 175
По умолчанию udp.ReceiveBuffer дублирует текст

Здравствуйте, отправляю текст по удп (TIdUdpClient) и получаю иногда ответ дважды (но ответ был один), помогите пожалуйста.

Код:
function TCsServerListener.Send(pcs:PCsServer; var buf; buflen:Word):string;
var
  s:PChar;
  b:array [0..1400] of char;
  i:Integer;
begin
  Result:='';
  FillChar(b[0],length(b),#0);
  udp.SendBuffer(pcs^.FIp, pcs^.FPort, buf, buflen);
  i:=1;
  while i<>0 do
  begin
    i:=udp.ReceiveBuffer(b[0],length(b));
    log('Received size: '+inttostr(i)+' bytes');     // для теста, выводит 911 байт
    if i = 0 then break;
    if copy(string(b),1,4) = 'юяяя' then move(b[9],b[0],length(b));
    if copy(string(b),1,5) = 'яяяяl' then move(b[5],b[0],length(b));
    log('Received text: ###'+copy(string(b),1,i)+'###');    // выводит полученный текст
    Result := Result + copy(string(b),1,i);
  end;
end;
Код:
i:=udp.ReceiveBuffer(b[0],length(b));
log('Received size: '+inttostr(i)+' bytes');
получает 2 раза одно и то же значение, как то можно сбросить предыдущее? Или другой вариант (кроме проверки на совпадение пакетов конечно же)
Естественно и проверка на совпадение размера пакета не подойдет, сервер ограничен порогом в 1400 байт так что он режет сообщения, и может несколько по 1400 прислать подряд
Здравствуйте

Последний раз редактировалось NEoMASTERR; 21.06.2015 в 11:57.
NEoMASTERR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Много раз дублирует вывод данных TurboDiesel Microsoft Office Access 6 12.11.2014 15:57
Дублирует структуру при считывании из файла RaTeN Общие вопросы C/C++ 2 05.10.2011 00:28
Запрос дублирует записи при выдаче результатов hronos1975 Microsoft Office Access 2 25.05.2010 07:34
Макрос дублирует строки. в чем ошибка? transkriptsiya Microsoft Office Excel 3 20.01.2010 11:27
cout/printf дублирует сообщение дважды, в начале цикла. Qousio Общие вопросы C/C++ 2 23.05.2009 13:50