Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/26: Рейтинг темы: голосов - 26, средняя оценка - 4.77
 Аватар для Alex99999
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299

Обработка пакетов

23.01.2019, 02:50. Показов 5829. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Как реализовать следующую задачу:
Есть файл с переданными пакетами. Длина пакетов 1936 байт.
Но может быть и меньше в случае передачи пакета с ошибкой.
- Первые 2 байта каждого пакета синхронизация (в десятичном представлении: 8 2).
- 1935 и 1936 байт имеют вид 0 1 или 1 0.
- 1930 байт счётчик пакетов (от 0 и до...).
Нужно:
1) Выбрать пакеты длиной 1936 байт начало которых 8 2 и окончание 0 1 либо 1 0.
2) Удалить повторяющиеся пакеты.
3) Отсортировать по счётчику (1930 байт).
4) Удалить Байты синхронизации (8 2) и 7 байт в конце каждого пакета.
5) Сохранить в файл.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2019, 02:50
Ответы с готовыми решениями:

Отправка пакетов
Доброго времени суток. Давно интересовался данной функцией , о найти толкового ответа , как ей пользоваться не нашел. Подскажите если...

Перехват пакетов
Подскажите пожалуйста, как в делфи можно работать с пакетами в браузере?Сколько не искал - ничего не нашел.

Разбор AVL пакетов GPS
Здравствуйте Ув. программисты. - Имеется трекер Teltonika FM4200. - Имеется TCP сервер слушающий определённый порт. Ранее TCP...

48
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
02.02.2019, 19:49
Студворк — интернет-сервис помощи студентам
$ обозначает, что число будет написано в шестнадцатиричном виде
а вот далее мы должны знать, как хранятся в памяти разные типы целых чисел
byte - тут все понятно, один байт. хранит значение от 0 до 255
word - это двухбайтное целое. и на x86 архитектуре первым хранится младший байт, потом старший
шестнадцатиричная запись удобна тем, что за каждый байт отвечают две цифры, и запись
$0802 обозначает, что в младшем байте у нас $02 а в старшем $08
если же рассматривать это как массив байтов, то порядок будет
02 08 ...
в обычной же записи это просто число 2050
раз уж процессор умеет работать с двухбайтовыми (и четырех, и восьми-) числами разом, то гораздо проще этим воспользоваться и сравнить сразу оба байта
1
 Аватар для Alex99999
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
06.02.2019, 18:06  [ТС]
krapotkin, объясните пожалуйста почему всегда не находит последний пакет?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function findPacketBegin(f: TFileStream; StartPos: integer): integer;
const
  BUF_SIZE = 4096;
var
  buf: array[0..BUF_SIZE - 1] of byte;
  i, n: integer;
begin
  result := -1;
  f.position := StartPos;
  repeat
    n := f.read(buf[0], BUF_SIZE);
    for i := 0 to n - 2 do
    begin
      if (buf[i] = $08) and (buf[i + 1] = $02) then
      begin
        result := i;
        f.position := result + startpos;
        exit;
      end
    end;
    f.Position := f.Position - 1; // 
  until n < BUF_SIZE;
 
  f.position := StartPos;
end;
Добавлено через 3 часа 36 минут
Не находит именно последний. Будь их хоть 10 хоть 100.
Возможно цикл явно прерывается раньше чем обработан весь массив.
Посмотрите пожалуйста???

Добавлено через 2 часа 31 минуту
Посмотрите кто нибудь правильность хода цикла?
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
06.02.2019, 22:19
на том файле, который был приложен программа ровно 12 пакетов находит
23232 / 1936 = *12*
0
 Аватар для Alex99999
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
07.02.2019, 04:41  [ТС]
krapotkin, запускаю Ваш проект всё нормально: 12.
После сохранения проекта в Делфи 7: получается 11 пакетов???

Добавлено через 2 часа 9 минут
Кто ни будь, пересохраните пожалуйста этот проект вместе с файлом ".dcu".
Или лучше со всеми файлами проекта. Имеется ввиду на более поздних версиях чем Д7.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
07.02.2019, 10:16
зачем вам файлы DCU если они полностью зависят от версии?
D7 тут был у кого-то пусть проверят
ну и воспользуйтесь уже отладчиком, чтобы понять, где не/выполняется к-нить условие
https://habrahabr.ru/post/178007/
0
 Аватар для Alex99999
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
07.02.2019, 16:52  [ТС]
Мистика какая-то. Ничего не могу понять. Ошибок никаких нигде нет.
А результат:
Миниатюры
Обработка пакетов  
0
 Аватар для Alex99999
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
08.02.2019, 04:29  [ТС]
Может кто подскажет в чём дело?
Должно быть 12 пакетов, а формируется 11.
Файл с проектом:
Вложения
Тип файла: rar packets.rar (179.7 Кб, 3 просмотров)
0
 Аватар для Alex99999
1 / 1 / 1
Регистрация: 03.12.2012
Сообщений: 299
08.02.2019, 08:27  [ТС]
krapotkin, разобрался!!!
было:
Delphi
1
while f.size - f.position > SizeOf(TPacketRec) do
надо:
Delphi
1
while f.size - f.position >=SizeOf(TPacketRec) do
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,686
Записей в блоге: 21
08.02.2019, 08:43
ура
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2019, 08:43

Перехват пакетов, отправляемых на устройство
День добрый. Решил освоить Делфи, и первая задача которую мне поставил: Есть ПО которое чрез виртуальные компорты(Есть устройство...

Отправка ICMP пакетов на указанный IP
напишите пожалуйста код программы что бы при ее запуске отправлялось определенное колличество пакетов на уже заранее указанный IP в коде:D

Очередность обработки пакетов из TClientSocket
Всем доброго времени суток! Имеется соединение с сервером через TClientSocket. При получении пакетов от сервера нужно обрабатывать каждый...

Чтение и запись пакетов Byte
Доброго дня. Есть сокет TCP, через него постоянно бегут пакеты PByte. Задача анализировать пакеты, вносить изменения, вести...

Icmp - узнать кол-во потерянных пакетов
Как узнать кол-во потерянных пакетов (в процентах). Заранее спасибо. (Исходник давать не обязательно).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
49
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru