ВУЗ:
Составители:
22
} ;
struct mybuf buf;
int fd;
char text[81];
int textLen;
printf("Ввести текст\n");
gets(text);
textLen=strlen(text);
if((key=ftok("smess.c",0))==-1 ){
perror("Ошибка создания ключа");
return 1;
}
if((fd=msgget(key, IPC_CREAT|0644))==-1) {
perror("Ошибка создания очереди");
return 1;
}
strncpy(buf.mtext, text, textLen);
buf.mtype=1L;
if((fd=msgsnd(fd, &buf, textLen,0))==-1) {
perror("Ошибка посылки сообщения");
return 1;
}
return 0;
}
Программа – клиент размещается в файле cmess.c.
Эта программа использует для приема сообщения буфер buf, аналогичный
серверу. Аналогично серверу в ней по той же строке с именем исходного файла
сервера создается ключ для доступа к очереди. В
отличие от сервера использует-
ся существующая очередь, поэтому при вызове функции msgget() достаточно
определить лишь значение ключа.
Для приема сообщения в функции msgrcv() задаются первые два пара-
метра, значение флагов и режима можно установить равными нулю. Текст полу-
ченного сообщения выводится на консоль.
/* Клиент работы с сообщениями */
#include <stdio.h>
} ;
struct mybuf buf;
int fd;
char text[81];
int textLen;
printf("Ввести текст\n");
gets(text);
textLen=strlen(text);
if((key=ftok("smess.c",0))==-1 ){
perror("Ошибка создания ключа");
return 1;
}
if((fd=msgget(key, IPC_CREAT|0644))==-1) {
perror("Ошибка создания очереди");
return 1;
}
strncpy(buf.mtext, text, textLen);
buf.mtype=1L;
if((fd=msgsnd(fd, &buf, textLen,0))==-1) {
perror("Ошибка посылки сообщения");
return 1;
}
return 0;
}
Программа – клиент размещается в файле cmess.c.
Эта программа использует для приема сообщения буфер buf, аналогичный
серверу. Аналогично серверу в ней по той же строке с именем исходного файла
сервера создается ключ для доступа к очереди. В отличие от сервера использует-
ся существующая очередь, поэтому при вызове функции msgget() достаточно
определить лишь значение ключа.
Для приема сообщения в функции msgrcv() задаются первые два пара-
метра, значение флагов и режима можно установить равными нулю. Текст полу-
ченного сообщения выводится на консоль.
/* Клиент работы с сообщениями */
#include
22
