Читайте также:
|
|
Первое, что должны сделать клиент — это установить соединение с помощью функции ConnectAttach(), описанной следующим образом:
#include <sys/neutrino.h>
int ConnectAttach
(int nd,pid_t pid, int chid, unsigned index, int flags);
Функции ConnectAttach() передаются три идентификатора;
· nd— дескриптор узла (Node Descriptor),
· pid— идентификатор процесса (process ID)
· chid — идентификатор канала (channel ID).
Вместе эти три идентификатора, которые обычно записываются в виде «ND/PID/CHID», однозначно идентифицируют сервер, с которым клиент желает соединиться. Аргументы index и flags мы здесь просто проигнорируем (установим их в ноль).
Итак, предположим, что мы хотим подсоединиться к процессу, находящемуся на нашем узле и имеющему идентификатор 77, по каналу с идентификатором 1. Ниже приведен пример программы для выполнения этого:
int coid;
coid = ConnectAttach (0, 77, 1, 0, 0);
Можно видеть, что присвоением идентификатору узла (nd) нулевого значения мы сообщаем ядру о том, что мы желаем установить соединение на локальном узле.
Соединиться надо с процессом 77 и по каналу 1.
С этого момента есть идентификатор соединения — небольшое целое число, которое однозначно идентифицирует соединение моего клиента с конкретным сервером по заданному каналу.
Теперь можно применять этот идентификатор для отправки запросов серверу сколько угодно раз. Выполнив все, для чего предназначалось соединение, его можно уничтожить с помощью функции:
ConnectDetach (coid);
Дата добавления: 2015-07-11; просмотров: 211 | Нарушение авторских прав