return (clid_pid = open(CLID_serverName, O_RDWR));
}
И клиент ничего бы не заметил.
/PARSE/CLID
/dev/clid
», но насколько вы хотите следовать POSIX — это ваше личное дело. В любом случае, это незначительное изменение, и оно мало связано с тем, что здесь обсуждается.Второе замечание касается того, что я по-прежнему назвал дескриптор файла
В любом случае, того чтобы данная программа была переносима в обе ОС, вам придется выделить код соединения с сервером в отдельную функцию — как я это сделал выше с функцией
В какой-то момент клиент должен будет выполнить собственно операцию отправки сообщения. Здесь все становится несколько сложнее. Поскольку отношения клиент/сервер
/*
* CLID_AddSingleNPANXX(npa, nxx)
*/
int CLID_AddSingleNPANXX(int npa, int nxx) {
checkAttach();
CLID_IPCData.npa = npa;
CLID_IPCData.nxx = nxx;
CLID_IPC(CLID_MsgAddSingleNPANXX);
return (CLID_IPCData.returnValue);
}
/*
* CLID_IPC(номер_сообщения_IPC)
*
* Эта подпрограмма вызывает сервер с глобальным буфером
* CLID_IPCData и заносит в него номер сообщения,
* переданный ей в качестве аргумента.
*
* Если сервера нет, эта подпрограмма установит
* поле returnValue в CLID_NoServer. Остальные
* поля остаются как есть.
*/
void CLID_IPC(int IPCMessage) {
if (clid_pid == -1) {
CLID_IPCData.returnValue = CLID_NoServer;
return;
}
CLID_IPCData.serverFunction = IPCMessage;
CLID_IPCData.type = 0x8001;
CLID_IPCData.subtype = 0;
if (Send(clid_pid, &CLID_IPCData, &CLID_IPCData,
sizeof(CLID_IPCData), sizeof(CLID_IPCData))) {
CLID_IPCData.returnValue = CLID_IPCError;
return;
}
}
void checkAttach() {
if (clid_pid == -1) {
CLID_Attach(NULL);
}
}
Как вы видите, функция
Обмен специализированными сообщениями происходит в функции
Специализированные сообщения могут быть обработаны о из двух способов. Можно:
1. транслировать их в стандартные вызовы функций POSIX основанные на файловых дескрипторах;
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT