UDP server
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.123] |
|
|
Соблюдайте общие правила форума
MSDN Library
FAQ раздела
Поиск по разделу
Как правильно задавать вопросы| Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
UDP server
|
Сообщ.
#16
,
|
|
|
|
я не использую Дельфи, только с++. Но общий путь решения я дал. |
|
Сообщ.
#17
,
|
|
|
|
и все таки. прошу помочь разобраться как установить Indy на Delphi XE. сложновато
Добавлено воспользовался советом на этом форуме http://forum.ru-board.com/topic.cgi?forum=...1977&start=1020 взял программу и нашел куда именно обращается дельфи и смог нормально установить Indy |
|
Сообщ.
#18
,
|
|
|
|
ЕЩЕ ВОПРОС:
1. создаю поток. код уже есть - программа рабочая ![]() ![]() ArrayTheard[id]:=TExecuteThread.Create(MyMutex1,id, num,sort_num,run_only_sort_num,word,room,dynamicnum,value); 2. Тело потока ![]() ![]() procedure TExecuteThread.Execute; begin UdpServer=TidUPDServer.create(nil) //создаю компонент //даю настройки его UdpServer.active:=true //запускаю while x<>"stop" do begin ЕСЛИ ПРИШЛИ ДАННЫЕ С IdUDPServer1UDPRead ТО ЗАПИСЫВАЮ ИЗ В БД end; UdpServer.Destroy ///уничтожаю end; ВОПРОС - как мне реализовать: while x<>"stop" do begin ЕСЛИ ПРИШЛИ ДАННЫЕ С IdUDPServer1UDPRead ТО ЗАПИСЫВАЮ ИЗ В БД end; в частности не понимаю как обрабатывать в потоке IdUDPServer1UDPRead т.е. что бы все работало верно - запускаю 20 серверов с разными настройками - каждый что бы имел свою обработку IdUDPServer1UDPRead и реализовать её в потоке.. как!? не хватает опыта . нужен какой то пример и подсказка |
|
Сообщ.
#19
,
|
|
|
|
Цитата Emmys @ в частности не понимаю как обрабатывать в потоке IdUDPServer1UDPRead т.е. что бы все работало верно - запускаю 20 серверов с разными настройками - каждый что бы имел свою обработку IdUDPServer1UDPRead и реализовать её в потоке.. как!? не хватает опыта . нужен какой то пример и подсказка Плохо понимаю вопросы...я делал так: 1. создаём Эвент. Будем использовать его для выхода из потока при завершении приложения. Эвент будет взводиться из главного потока приложения при завершении работы. Например из WM_CLOSE или WM_DESTROY. Поток будет существовать всё время, пока существует приложение. 2. создаю поток. В потоке: 3. Создаём сокет. 4. Делаем Bind Начало цикла: 5. Используем select, для получения статуса сокета и последующего его чтения. select работает с T-OUT-ом. Либо будет информация о принятых данных, либо информация об ошибке, либо T-OUT. 6. Если приняли данные, то используем их по назначению. Если ошибка - обрабатываем её. Проверяем эвент на готовность. Если TOUT, только проверяем эвент на готовность. Если взведён - зачищаем ресурсы,выходим из потока. Иначе - возвращаемся к пункту 5. |
|
Сообщ.
#20
,
|
|
|
|
ЫукпШ, вы понятно говорите. я это вроде как понимаю - как должно быть.
но именно я не понимаю как это сделать с учетом что я хотел обрабатывать именно IdUDPServer1UDPRead в потоке. от компонента idUDPSServer пример надо |
|
Сообщ.
#21
,
|
|
|
|
Emmys, мне кажется ты пытаешься скрестить змею с колючей проволокой, ЫукпШ тебе говорит как это работает через обычные сокеты, которые беркли, а ты зачем-то пытаешься туда Indy впихнуть, которые как я понимаю либо уже работают через отдельный поток либо вообще асинхронные.... т.е. если тебе так нужен Indy, то лучше вообще без потока обойтись - просто в UDPRead лепишь конечный автомат под свои нужды.
|
|
Сообщ.
#22
,
|
|
|
|
Step, по факту. есть приложение. пользователь задает задачи какие либо. каждое задание или несколько заданий в группе и для выполнения - запускается поток.
так вот. хочу возможность добавить создать задачу - задание 1 - создать сервер с портом 50000, задание 2 - создать сервер с портом 50001 и так далее. тоесть динамически забиндить определенное количество портов. и что бы каждый сам забиндиный сервер принимал отдельно данные пришедшие на его конкретный порт. т.е. динамическое создание и уничтожение idUDPSErver в потоке с обработкой пришедших данных мне кажется так можно. но просто знаний не хватет |
|
Сообщ.
#23
,
|
|
|
|
ну ок. сделал топорно вынеся это в отдельный процесс который запускается с параметром....
|