Printf

Взаимодействие процессов. Сигналы. Клиент-сервер. Linux

03.06.2012, 17:31. Показов 1527. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем вот такое задание : Клиент предлагает пользователю ввести символьную строку, которая потом будет отправлена серверу. Далее клиент ожидает ответа от сервера. Работа клиента прекращается в случае поступления от сервера строки, содержащей «bye». Сервер получает строку от клиента и отвечает на неё следующим образом: либо как в игре « глухой телефон», либо, если получил – «bye», то – «bye». Работа сервера завершается в случае поступления от клиента строки, содержащей «bye».

Коды вроде написаны правильно. Сервер посылает, клиент принимает, НО когда клиент посылает "BYE" он сразу прекращает свою работу, т е он не получает встречное "BYE" от сервера. Хотя тот ждет. Может кто подсказать где ошибка??
КЛИЕНТ:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <sys/types.h>
#include <sys/ipc.h>
#include <stdio.h>
#include <sys/msg.h>
#include "/home/newbee/mesg.h"
 
main()
{
message message;
 key_t key;
int msgid,length,i,n ;
char z[20];
 
message.mtype = 1;
if ( (key = ftok("server", "A")) > 0);
 
printf("введите что-нибудь\n");
scanf ("%s", z);
 
if ( (msgid = msgget(key, 0)) < 0);
 
/*Поместим строку в сообщение*/
 
message.mtype=1;
 
if ((length = sprintf(message.buff, z )) < 0) {printf ("nbnbn");}
 
/*Передадим сообщение*/
 
 if (msgsnd(msgid, (void *) &message, length, 0) !=0) {printf("gfrgf");}
 
message.mtype=2; 
//memset(message.buff, 0, sizeof(message.buff));
  
 n=msgrcv(msgid, &message, sizeof(message), message.mtype, 0); 
 
 if (n > 0) 
{
 
if (write(1, message.buff, n) != n);
 
} 
 else 
{ 
printf("Ошибка чтения сообщения\n");
 }
 
message.mtype=1;
 
if ( (length = sprintf(message.buff, "\nBYYE!\n")) < 0);
 
if (msgsnd(msgid, (void *) &message, length, 0) !=0) {printf("mnmnm");}
 
}
СЕРВЕР:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <sys/types.h>
#include <sys/ipc.h>
#include <stdio.h>
#include <sys/msg.h>
#include "/home/newbee/mesg.h" 
 
main ()
{
message message;
key_t key;
int msgid, length, n,i;
 
 /*Получим ключ*/
 
if ( (key = ftok("server", "A")) > 0) {printf("jjjjj");}
 
if ( (msgid = msgget(key, PERM | IPC_CREAT)) < 0) {printf("hngjjhj");}
 
while(1)
{
 
message.mtype=1; 
memset(message.buff, 0, sizeof(message.buff));
 
n=msgrcv(msgid, &message, sizeof(message), message.mtype, 0);
 
if (n>0) 
  { 
 
 if (write(1, message.buff, n)!=n) {printf("zzz");}
 
if(strcmp(message.buff,"BYE\n")==0)
 
{
length = sprintf(message.buff, "BYE!\n");
 
message.mtype=2;
 
/*Передадим обратно*/
 
 msgsnd(msgid, (void *) &message, length, 0);
 
if (msgctl(msgid, IPC_RMID,0)<0){printf("kjhgkjg");}
}
 
else
{
length = sprintf(message.buff, "бла-бла\n"); }
 
 
message.mtype=2;
 
/*Передадим обратно*/
 
 msgsnd(msgid, (void *) &message, length, 0);
 
}
}
 
if (msgctl(msgid, IPC_RMID, 0) < 0)
 
{
printf("Ошибка удаления очереди\n");
}}
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2012, 17:31
Ответы с готовыми решениями:

Взаимодействие процессов. Сигналы
Создать дерево процессов 1-&gt;(2,3) 2-&gt;(4,5) 5-&gt;6 6-&gt;(7,8) Процессы непрерывно обмениваются сигналами 1-&gt;(8,7,6) SIGUSR1 ...

Создать взаимодействие клиент-сервер с помощью Канала FIFO
Хочу создать взаимодействие клиент-сервер с помощью Канала FIFO. Но не могу открыть файл. Решил, что ошибка не у меня. Вот нашел код на не...

Взаимодействие WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер
Здравствуйте. Интересует информация о взаимодействии WinCC с Labview 2013, как сервер-клиент, так и клиент-сервер через ОРС-инфтерфейс. ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2012, 17:31
Помогаю со студенческими работами здесь

Взаимодействие клиент-сервер-клиент
Добрый день! Есть web сервер (устройство) с серым IP, клиент должен получить к нему доступ удаленно через инет. Ситуация такая, что...

Организовать взаимодействие типа клиент-сервер
Организовать взаимодействие типа клиент-сервер. Клиент делает запрос серверу на выполнение какой-либо команды. Сервер выполняет эту команду...

Организовать взаимодействие типа клиент - сервер
Организовать взаимодействие типа клиент - сервер.Клиенты подключается к первому серверу, передают запрос на получение определенного...

Организовать взаимодействие типа клиент - сервер
привет! не знаю туда ли пишу но делать кажется VISUAL STUDIO ,помогите сделать это) Организовать взаимодействие типa клиент -...

Клиент - сервер, взаимодействие или отдельная служба
Добрый день форумчане. С каждым новым проектом, потребности начинают увеличиваться. И пришла видимо пора научится обращаться к серверу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru