Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать так чтобы и пакеты успевать принимать и парсить их? [D7, XP]


Страницы:   1 2

Velimir ©   (2006-10-24 21:10:00) 

У меня есть UDP Server (я использую компонент Indy) который принимает пакеты по определнному порту.
Инфа сыпется с очень маленьким инетервалом времени и если писать парсинг пакета в процедуре приема, то я теряю часть пакетов :(
Так вот вопрос: как сделать так чтобы и пакеты успевать принимать и парсить их?

Понятно, что нужно в процедуре приема быстренько перекинуть пакет из буфера в переменную (буфер, массив переменных)... Но вот как заставить другую часть проги реагирорвать на то, что переменная изменилась? И как сделать так, чтобы прием был приоритетен? Это для меня загадка :(

Заранее благодарен за любую помощь!


unknown   (2006-10-24 23:05:00) [21]


> Velimir ©   (24.10.06 21:10)

Протокол UDP ориентирован на транзакции, получение датаграмм и защита от дублирования не гарантированы. Приложения, требующие гарантированного получения потоков данных, должны использовать протокол управления пересылкой (Transmission Control Protocol - TCP)
http://www.citforum.ru/internet/tifamily/udpspec.shtml


Пусик   (2006-10-24 21:56:00) [22]


> Как сделать так чтобы и пакеты успевать принимать и парсить
> их?


Использовать TCP, а не UDP


Velimir   (2006-10-24 21:41:00) [23]

ТО Джо: Спасибо. Пошел читать =)


Джо   (2006-10-24 21:34:00) [24]

> [6] Velimir ©   (24.10.06 21:32)
> ТО Джо: пока не помог, но хотя бы задал направление поиска.
> Спасибо!

Да, собственно, нужно почитать о потоках (threads), а потом о классе-обертке в Делфи — TThread.


Velimir   (2006-10-24 21:32:00) [25]

ТО Джо: пока не помог, но хотя бы задал направление поиска. Спасибо!


Velimir   (2006-10-24 21:30:00) [26]

Продублировал ветки потому что ответа долго не было =( Простите пожалуйста больше так не буду! Честно!


Джо   (2006-10-24 21:27:00) [27]

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

with TMyThread.Create (True) do
begin
 CopyDataFrom (ABytes);
 OnStop := OnParserStop;
 Resume
end;

Поможет он разве чем-то?..


Ketmar   (2006-10-24 21:27:00) [28]

и что за манера -- дублировать ветки? всё, желание отвечать дальше испарилось.


Velimir   (2006-10-24 21:24:00) [29]

ТО Джо: А как запустить поток? Я никогда с паралельными потоками не работал... Примерчик, пожалуйста. Заранее благодарен!!!


Джо   (2006-10-24 21:18:00) [30]

Запускай поток для разбора пакета, ему передавай данные...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо