На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> UDP server
    Цитата Emmys @
    не могли бы вы помочь как это сделать. ставлю на дельфи XE

    я не использую Дельфи, только с++.
    Но общий путь решения я дал.
      и все таки. прошу помочь разобраться как установить Indy на Delphi XE. сложновато

      Добавлено
      воспользовался советом на этом форуме
      http://forum.ru-board.com/topic.cgi?forum=...1977&start=1020

      взял программу и нашел куда именно обращается дельфи и смог нормально установить Indy
      Сообщение отредактировано: Emmys -
        ЕЩЕ ВОПРОС:

        1. создаю поток. код уже есть - программа рабочая
        ExpandedWrap disabled
          ArrayTheard[id]:=TExecuteThread.Create(MyMutex1,id, num,sort_num,run_only_sort_num,word,room,dynamicnum,value);




        2. Тело потока
        ExpandedWrap disabled
          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 и реализовать её в потоке..
        как!? не хватает опыта . нужен какой то пример и подсказка
          Цитата Emmys @
          в частности не понимаю как обрабатывать в потоке IdUDPServer1UDPRead
          т.е. что бы все работало верно - запускаю 20 серверов с разными настройками - каждый что бы имел свою обработку IdUDPServer1UDPRead и реализовать её в потоке..
          как!? не хватает опыта . нужен какой то пример и подсказка

          Плохо понимаю вопросы...я делал так:
          1. создаём Эвент. Будем использовать его для выхода из потока при завершении приложения.
          Эвент будет взводиться из главного потока приложения при завершении работы.
          Например из WM_CLOSE или WM_DESTROY.
          Поток будет существовать всё время, пока существует приложение.
          2. создаю поток. В потоке:
          3. Создаём сокет.
          4. Делаем Bind

          Начало цикла:
          5. Используем select, для получения статуса сокета и последующего его чтения.
          select работает с T-OUT-ом.
          Либо будет информация о принятых данных, либо информация об ошибке, либо T-OUT.
          6. Если приняли данные, то используем их по назначению.
          Если ошибка - обрабатываем её.
          Проверяем эвент на готовность.
          Если TOUT, только проверяем эвент на готовность.
          Если взведён - зачищаем ресурсы,выходим из потока.
          Иначе - возвращаемся к пункту 5.
          Сообщение отредактировано: ЫукпШ -
            ЫукпШ, вы понятно говорите. я это вроде как понимаю - как должно быть.

            но именно я не понимаю как это сделать с учетом что я хотел обрабатывать именно IdUDPServer1UDPRead в потоке.
            от компонента idUDPSServer

            пример надо
              Emmys, мне кажется ты пытаешься скрестить змею с колючей проволокой, ЫукпШ тебе говорит как это работает через обычные сокеты, которые беркли, а ты зачем-то пытаешься туда Indy впихнуть, которые как я понимаю либо уже работают через отдельный поток либо вообще асинхронные.... т.е. если тебе так нужен Indy, то лучше вообще без потока обойтись - просто в UDPRead лепишь конечный автомат под свои нужды.
                Step, по факту. есть приложение. пользователь задает задачи какие либо. каждое задание или несколько заданий в группе и для выполнения - запускается поток.
                так вот. хочу возможность добавить создать задачу - задание 1 - создать сервер с портом 50000, задание 2 - создать сервер с портом 50001 и так далее. тоесть динамически забиндить определенное количество портов. и что бы каждый сам забиндиный сервер принимал отдельно данные пришедшие на его конкретный порт. т.е. динамическое создание и уничтожение idUDPSErver в потоке с обработкой пришедших данных
                мне кажется так можно. но просто знаний не хватет
                  ну ок. сделал топорно вынеся это в отдельный процесс который запускается с параметром....
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0.0747 ]   [ 15 queries used ]   [ Generated: 25.08.26, 14:57 GMT ]