На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
    > UDP клиент и сервер , Как?
      Цитата Oleg2004 @
      зачем нужен таймер

      Таймер нужен для того, чтобы запрашивать данные с сервера с нужной периодичностью.
        Цитата Alexei @

        Таймер нужен для того, чтобы запрашивать данные с сервера с нужной периодичностью.

        Понятно.
        Я бы лучше вызывал sleep().
        И никаких сообщений от таймера.
        Впрочем, на вкус и цвет... :)
          Цитата Oleg2004 @
          Я бы лучше вызывал sleep().

          Так она просто будет останавливать программу, а у меня большие планы :)

          Я попробовал WSAAsyncSelect , для wm6.1 все скомпилировалось(Гейц сам уже ничего не помнит) и так же работает и ... виснет также. :)
            Цитата Alexei @

            Так она просто будет останавливать программу, а у меня большие планы :)

            Ну ну.... :)
            К сожалению вы должны смириться с мыслью, что в сетевом программировании мы сплошь и рядом имеем дело с двумя вещами - кучей буферов по дороге данных - и кучу временных задержек - в основном недетерминированных, потому как сеть оооооочень капризный файл.
            И ей могут быть не по нраву ваши планы...
            Но зачем вам таймер теперь я понял :yes:
            Цитата Alexei @
            Я попробовал WSAAsyncSelect , для wm6.1 все скомпилировалось(

            Не вопрос, WSAAsyncSelect всегда входила в спецификацию Winsock 1.1 для Windows CE (а это основа всех мобильных операционок микрософта)
            Так что Билл не виноват... :D
            Вы бы код опубликовали ...тогда можно говорить предметно.
            И - точный и однозначный алгоритм взаимодействия клиент-сервер.
            Сообщение отредактировано: Oleg2004 -
              Цитата Oleg2004 @
              ей могут быть не по нраву ваши планы...

              Так поэтому я и выбрал UDP.Что не успело- то опоздало.

              Цитата Oleg2004 @
              - точный и однозначный алгоритм взаимодействия клиент-сервер.

              Дык, в самом начале я все однозначно пожелал
              Цитата Alexei @
              Клиент на Винмобаил каждые 20мС(желательно) шлет на сервер несколько байт.
              Сервер шлет ему свои несколько байт, затем подготавливает данные для следующего раза.
              Клиент будет только один.

              и, главное, чтобы клиент не вис, никогда! :)
              Пакеты могут теряться, связь пропадать, но программа должна реализовывать мои , далеко идущие ,планы. :)
                Цитата Alexei @
                Дык, в самом начале я все однозначно пожелал

                Это на алгоритм не похоже:
                Цитата Alexei @
                Хочу сделать следующее:
                Клиент на Винмобаил каждые 20 мС(желательно) шлет на сервер несколько байт.
                Сервер шлет ему свои несколько байт, затем подготавливает данные для следующего раза.
                Клиент будет только один.

                Смотрим по шагам:
                1. Клиент на Винмобаил каждые 20 мС(желательно) шлет на сервер несколько байт.
                Ну и как это представляете себе?
                20 мс - это обычный таймслайс для большинства операционных систем. Я не знаю на какой ОС у вас сервер, но тем не менее - вот пришли на серверный компутер первые байты. Если там куча приложений - то всем им дается интервал процессорного времени - и практически сто процентов, что серверное приложение получит эти байты через 20 мс+время по сети. На работу сервера выделяется тоже 20 мс за эти мс он должен принять, обработать и послать - а потом получит процессорное время после 100 мс или больше. А тут вы клиентиом уже 5 раз по 20 мс ему шлете свои байты... Не получается однако...
                Если эта схема будет работать на одной машине - и то я сомневаюсь в синхронизации процессов приема/отправки. 20 мс - это нереально...
                Предполагаю, что первый обмен у вас еще получится, но все последующие....
                2. Что означает - подготавливает данные..? Он знает, что вы ему на подготовку отпустили всего 20 мс?
                  Цитата Oleg2004 @
                  Ну и как это представляете себе?

                  1.Во-первых желательно, во-вторых телефон успевает опросить,например акселерометр за это время, в-третьих ,возможно это и будет на только одном ПК.
                  2. Там не сложно :) Клиенту будет сложнее.
                  Когда эта проблема возникнет -будем порешать... :P

                  Сейчас, вот проблема- похоже WSAAsyncSelect нет в вин се :angry:
                    Цитата Alexei @
                    1.Во-первых желательно,

                    Желательно - это не означает что есть возможность реализовать желание. К этому надо стремиться, однако...
                    Цитата
                    во-вторых телефон успевает опросить, например акселерометр за это время, в-третьих ,возможно это и будет на только одном ПК.

                    Если предполагается обработка где-то в сети на одном ПК - как я писал, будут проблемы.
                    И акселерометр???
                    Какая конкретно под него задача решается?
                    Поэтому как я еще раз повторю - интервал 20 мс может? быть реален только тогда, когда обработка его производится на одной и той же машине. Если телефон отдельно а ПК - в обычной Ethernet сети отдельно, следует менять концепцию.
                    Имхо.
                    Это и есть - описание алгоритма...
                    Буду рад, если вы меня опровергнете.

                    Цитата
                    Сейчас, вот проблема- похоже WSAAsyncSelect нет в вин се :angry:

                    Да, я проверил - в спецификацию Winsock 1.1 WSAAsyncSelect() входит, и хотя Микрософт заверяла, что эта спецификация поддерживается Windows CE - на самом деле это не так. Это же пишет и Олунд.
                    В результате действительно так - в мобильных системах не поддерживается, увы.
                    Сообщение отредактировано: Oleg2004 -
                      Цитата Oleg2004 @
                      Какая конкретно под него задача решается?

                      Пока,цифирки показываются в окошках. :)
                      Акселерометр взят на вскиду, чтобы было что передать в запросе.Для опытов.:) Может , в другой задаче будет управлять курсором.
                      Главное, получить от сервера 8 байт(даже , возможно 4) , их надо считать с джойстиков.
                      В принципе, сервер может быть консольным, если это облегчит жизнь.
                      Сейчас меня больше удручает необходимость создания потока в клиенте :(
                      В нем я бы хотел поэкономить ресурсы.
                        Цитата Alexei @
                        Главное, получить от сервера 8 байт(даже , возможно 4) , их надо считать с джойстиков.

                        Ну так в чем проблема то?
                        Значит висим на recvfrom() и все дела.
                        Цитата Alexei @
                        Сейчас меня больше удручает необходимость создания потока в клиенте :(

                        Теперь я снова не убежден что вам нужны потоки .
                        UDP-клиенты вообще примитивны...впрочем как и сервера.
                        Впрочем воля ваша...
                          Цитата Oleg2004 @
                          и все дела.

                          Сделал с WSAEventSelect без лишних потоков.Телефон(клиент) не виснет если закрыть сервер совсем, или только передачу.При "реанимации" сервера, работа вознобнавляется. :yes:
                            Я рад что все получилось... :)
                            Ставьте пометку - Вопрос решен...
                            Сообщение отредактировано: Oleg2004 -
                            1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0326 ]   [ 15 queries used ]   [ Generated: 20.05.24, 04:23 GMT ]