![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать так чтобы и пакеты успевать принимать и парсить их? [D7, XP]
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]Запускай поток для разбора пакета, ему передавай данные...