Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Printf

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

03.06.2012, 17:31. Показов 1521. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru