Код процесса-клиента, использующего службу глобальных имен
Код процесса-клиента, использующего службу глобальных имен
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <sys/dispatch.h>
/* На сервер могут приходить и импульсы. Как минимум. */
typedef struct _pulse msg_header_t;
/* Структура сообщения состоит из заголовка и буфера наших данных */
typedef struct _MsgBuf {
msg_header_t hdr;
char* Buffer;
} MsgBuf_t;
int main() {
MsgBuf_t MsgBuf;
int fd;
char BufReply[100];
if ((fd = name_open("MyService", NAME_FLAG_ATTACH_GLOBAL)) == -1) {
printf("Клиенту не удалось присоединиться к"
" сервису ");
fflush(stdout);
return EXIT_FAILURE;
}
// Инвентаризационная метка данного клиента
MsgBuf.hdr.type = 0x50001;
MsgBuf.hdr.subtype = 0x00;
strcpy (MsgBuf.Buffer, "Здравствуй, дорогой сервер!");
if (MsgSend(fd, &MsgBuf, sizeof MsgBuf, BufReply, sizeof BufReply) == -1) {
printf("Клиент имеет проблемы с передачей сообщений"
" серверу ");
fflush(stdout);
name_close(fd);
return EXIT_FAILURE;
}
printf("Клиент получил от сервера такой ответ: "
""%s" ", BufReply);
name_close(fd);
return EXIT_SUCCESS;
}
Тем, кто уже использовал функции работы со службой глобальных имен в предыдущей реализации ОС QNX 6.2 (где, как указывалось выше, она уже существовала, но могла функционировать только локально), следует обратить внимание, что в поведении этих функций появились небольшие изменения.
Раньше, когда приложение-клиент использовало вызов функции name_open() для связи с сервером, сервер об этом не знал. Теперь это изменено: серверу фактически отсылается сообщение _IO_CONNECT/_IO_OPEN. Кроме того, изменено приложение-сервер, чтобы иметь возможность обрабатывать приход сообщения _IO_CONNECT.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Код процесса-клиента
Код процесса-клиента Как было сказано, клиент открывает файл (функция open()), после чего использует MsgSend(), отсылая сообщения и получая ответы.#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <sys/neutrino.h>#include <sys/iomsg.h>#include <locale.h>#include <string.h>#include "/home/ZZZ/TESTS/MR/MessTest.h"int main() { int
Использование менеджера службы глобальных имен
Использование менеджера службы глобальных имен Начиная с QNX версии 6.3 сервис глобальных имен, обеспечиваемый GNS-менеджером службы (утилитой gns), действует в сети. Используя этот сервис, нет необходимости организовывать программу как полноценный менеджер ресурсов, при
Код процесса-сервера, использующего службу глобальных имен
Код процесса-сервера, использующего службу глобальных имен #include <stdio.h>#include <errno.h>#include <stdlib.h>#include <sys/dispatch h>/* На сервер могут приходить и импульсы. Как минимум. */typedef struct _pulse msg_header_t;/* Структура сообщения состоит из заголовка и буфера наших данных */typedef struct _MsgBuf
1.3. Информационная безопасность в условиях функционирования в России глобальных сетей
1.3. Информационная безопасность в условиях функционирования в России глобальных сетей Цель мероприятий в области информационной безопасности – защитить интересы субъектов информационных отношений. Интересы эти многообразны, но все они концентрируются вокруг трех
5.3.4. Конфигурирование клиента SSH
5.3.4. Конфигурирование клиента SSH Настройки SSH-клиента содержат еще меньше параметров. В файле /etc/ssh/ssh_config находятся глобальные настройки для всех пользователей в системе. Но вы можете для любого из них переопределить произвольный параметр в файле .ssh_config из директории
Установка глобальных параметров
Установка глобальных параметров В листинге 5.1 приведен пример содержимого файла dhcpd.conf, предназначенного для организации динамического распределения IP-адресов. Несмотря на то что данный конфигурационный файл очень прост, его можно использовать на практике для
14.7.1 Проверка имен хоста клиента
14.7.1 Проверка имен хоста клиента Иногда пользователи сталкиваются с невозможностью анонимного доступа к файловому архиву. Если это происходит не часто, то обычно является следствием загруженности сервера. Однако если доступ невозможен постоянно, значит есть проблемы с
13.2. Настройка клиента DNS
13.2. Настройка клиента DNS Разрешение имен на стороне DNS-клиента выполняет модуль распознавания (резолвер). В ОС Linux он представляет собой набор библиотечных функций. Конфигурационным файлом распознавателя служит /etc/resolv.conf, содержащий список DNS-серверов (от 1 до 3), которым
23-й час Использование SQL в локальных и глобальных сетях
23-й час Использование SQL в локальных и глобальных сетях В ходе этого урока мы с вами поговорим о том как использовать SQL в сю-виях реального предприятия ичи локачьной сети компании и как испочьзовать SQL в InternetОсновными на этом уроке будут следующие темы• SQL на уровне
7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО)
7.3.2. Концепции, касающиеся основных средств производственного процесса организации Основные средства производственного процесса организации (ППО) Организация устанавливает и сопровождает набор основных средств производственного процесса, как показано на рис. 4.1. К
8.5. Коэффициенты в качестве глобальных параметров
8.5. Коэффициенты в качестве глобальных параметров До сих пор вы называли глобальными параметрами только значения компонентов, то есть сопротивление резисторов, индуктивность катушек и емкость конденсаторов. Однако за понятием «глобальный» кроется гораздо больше. Один
2.4. Предотвращение конфликта имен с помощью пространств имен
2.4. Предотвращение конфликта имен с помощью пространств имен ПроблемаВ несвязанных между собой модулях обнаружены конфликтующие имена или требуется заранее избежать возможности таких конфликтов, создав логические группы кода.РешениеДля структурирования кода
Инсталляция приложения, использующего удаленное взаимодействие
Инсталляция приложения, использующего удаленное взаимодействие Хватит акронимов! К этому моменту вы почти готовы к построению своего первого .NET-приложения, использующего удаленное взаимодействие. Но перед тем, как это сделать, мы должны обсудить одну деталь: процедуру
Тестирование приложения, использующего удаленное взаимодействие
Тестирование приложения, использующего удаленное взаимодействие При тестировании приложения начните с запуска серверного приложения, которое откроет HTTP-канал и зарегистрирует объект RemoteMessageObject для удаленного доступа. Затем запустите экземпляр приложения клиента.