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

Клиент и сервер

03.11.2016, 19:10. Показов 966. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 формы. Одна форма клиент, вторая сервер. При запуске формы сервера открывается окно клиента в котором нужно ввести строку, после чего эту строку вывести на форме сервера.
Есть готовый код, но он был написан в обычном блокноте и запускался в терминале. Не могу переделать этот код под qtdesighner. Так же нужно это делать с помощью разделяемой памяти и семафоров.
Код сервера
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
#include <stdio.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include "shmem.h"
 
int main()
{
    int shmid, semid;
    key_t key;
    Message *msgptr;
 
    key = ftok("./server.c", 'A');
    shmid = shmget(key, sizeof(Message), IPC_CREAT | IPC_EXCL | PERM);
    msgptr = (Message*)shmat(shmid, NULL, 0);
    semid = semget(key, 2, IPC_CREAT | IPC_EXCL | PERM);
    printf("\n Серверный процесс подготовительные операции выполнил");
    semop(semid, &proc_wait[0], 1);
    printf("\n", semop);
    semop(semid, &mem_lock[0], 2);
    printf("\n %s", msgptr->buff);
    semop(semid, &mem_unlock[0], 1);
    shmdt(msgptr);
    printf("\n Серверный процесс успешно завершил свою работу");
}
Код клиента
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
#include <stdio.h>
#include <string.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include "shmem.h"
 
int main()
{
    int shmid, semid;
    char str[1024];
 
    printf("Введите вашу строку: ");
    fgets(str, sizeof(str), stdin);
 
    key_t key;
    Message *msgptr;
 
    key = ftok("./server.c", 'A');
    shmid = shmget(key, sizeof(Message), PERM);
    msgptr = (Message*)shmat(shmid, NULL, 0);
    semid = semget(key, 2, PERM);
    semop(shmid, &proc_start[0], 1);
    semop(shmid, &mem_lock[0], 2);
    sprintf(msgptr->buff, "%s", str);
    semop(shmid, &mem_unlock[0], 1);
    semop(shmid, &mem_lock[0], 2);
    shmdt(msgptr);
    shmctl(shmid, IPC_RMID, NULL);
    semctl(semid, 0, IPC_RMID);
    semctl(semid, 1, IPC_RMID);
}
Файл для работы с семафорами shmem.h
C
1
2
3
4
5
6
7
8
9
10
11
12
#define PERM 0666
#define MAXBUFF 80
 
typedef struct mem_msg {
    int segment; 
    char buff[MAXBUFF];
} Message;
 
static struct sembuf mem_lock[2] = { 0, 0, 0, 0, 1, 0 };
static struct sembuf mem_unlock[1] = { 0, -1, 0 };
static struct sembuf proc_wait[1] = { 1, -1, 0 };
static struct sembuf proc_start[1] = { 1, 1, 0 };
Если я правильно понял, то вся суть в этой строке
C
1
 key = ftok("./server.c", 'A');
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2016, 19:10
Ответы с готовыми решениями:

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

Клиент-сервер в один клик!(элемет сервер, клиент)
Вот решил поделиться с вами своей идеей и её реализацией. Всегда написание Сервера и Клиента к нему занимало много времени. Сначала хотел...

Клиент-Серверное приложение. Как сделать, чтобы сервер сам отправлял сообщения на клиент
Добрый день всем. Проблема заключается в следующем: Есть клиент-серверное приложение, хочу реализовать своего рода защиту, чтобы при...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2016, 19:10
Помогаю со студенческими работами здесь

Клиент-серверное приложение. Сервер - ПК, клиент - телефон (Android)
Здравствуйте, решил для обучения написать программу для выключения ПК с телефона, используя компонент TIdTCPServer. Подскажите, как...

Клиент-сервер: Как определить, что клиент отключился?
Привет. Есть клиент и сервер, при подключении клиента, на сервере создается класс, который содержит копию сокета и всякую инфу клиента, и...

Передача файлов клиент-сервер-клиент используя Socket
Добрый день! Срочно нужна помощь. Мне нужно передать файлы с клиента на сервер и обратно, используя TServerSocket и TClientSocket. ...

Клиент-сервер: клиент требует повторно сгенерировать массив
Здравствуйте, есть программы клиент и сервер, клиент после требуемого ввода IP, пароля и генерации элементов массива всё равно требует...

Клиент-серверное приложение: как определить, что сервер/клиент не отвечает в течении определенного времени
Пишу клиент-серверное приложение. Использую TCPListener и TCPClient. Вопрос: как определить что сервер(клиент) не отвечает в течении...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru