Официальный форум СВД Встраиваемые Системы
03 Декабря, 2016, 05:22:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Виртуальный прокси и таймер не работают в QNX 4.25  (Прочитано 1104 раз)
roozu
Интересующийся

Сообщений: 1


« : 28 Марта, 2013, 14:43:35 »

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

Код сервера:
#include <sys/proxy.h>
#include <signal.h>
#include <time.h>
#include <sys/kernel.h>
#include <unistd.h>
#include <assert.h>
#include <iostream>

int main()
{
   //создается прокси
   int proxy = qnx_proxy_attach(0, NULL, 0, -1);
   cout << "local proxy: " << proxy << endl;
   //создается виртуальный прокси на третьем узле
   int vproxy = qnx_proxy_rem_attach(3, proxy);
   cout << "global proxy: " << vproxy << endl;
   assert(vproxy != -1);
   while(1)
   {
      //получаем сообщение
      pid_t cli_pid = Receive(0, NULL, 0);
      cout << "get msg form: " << cli_pid << endl;
   }
   return 0;
}

код клиента:
#include <sys/proxy.h>
#include <signal.h>
#include <time.h>
#include <sys/kernel.h>
#include <sys/types.h>
#include <unistd.h>
#include <assert.h>
#include <iostream>

int main()
{
   int vproxy;
   cout << "enter vproxy: ";
   //вводим идентификатор виртуального прокси
   cin >> vproxy;
   cout << endl;
   //отправляем прокси через триггер (всегда доходит)
   Trigger(vproxy);
   //создаем таймер, который срабатывает каждую секунду
   timer_t id, i;
   struct itimerspec timer;
   struct sigevent event;
   event.sigev_signo = -vproxy;
   id = timer_create(CLOCK_REALTIME, &event);
   assert(id != -1);
   timer.it_value.tv_sec = 1L;
   timer.it_value.tv_nsec = 0L;
   timer.it_interval.tv_sec = 1L;
   timer.it_interval.tv_nsec = 0L;
   //запускаем таймер
   int err_stat = timer_settime(id, 0, &timer, NULL);
   assert(err_stat != -1);
   sleep(60);
   return 0;
}

Если и сервер и клиент запускаются на одном узле, все работает как надо, если же на разных, то прокси отправляется только по вызову функции Trigger(). Неужели таймер отправляет прокси не через триггер, а каким-то другим способом?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2016 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 21 Ноября, 2016, 15:55:29