Форум программистов, компьютерный форум CyberForum.ru

Программа должна моделировать взаимодействие серверной части и некоторого множества клиентских частей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Что мне делать или что надо знать перед тем как начать изучение яз.программирования С/С++? http://www.cyberforum.ru/cpp-beginners/thread611420.html
Я пока вообще не умею программировать.Сначала хотел с бейсика или паскаля.Но многие советуют начинать сразу с С/С++.
C++ Вызов виртуальной функции по указателю Суть в том, что преподаватель дал задание на защиту курсовой: вызов по указателю виртуальной функции из ТВР, искал в интернете, наткнулся на этом форуме на то, что доступа прямого к таблице нет, может кто-то подсказать или подкинуть статью/литературу, время до утра, поэтому буду благодарен за оперативность. http://www.cyberforum.ru/cpp-beginners/thread611414.html
Проверить массив на инициализированность C++
std::list<my_type> c ; при с.push_back(my_type что_угодно) ; нужно скопировать значения одного массива А в массив В ,при этом не известно было ли в массиве В что-нибудь до этого ,закинутого туда пользователем .0xcdcdcdcd сейчас адрес ,но там будет что угодно в релизной версии,коли правильно я понял .
C++ В чём отличие switch и if?
Препод задал вопрос, я ответил, то что switch использует только int и char, возвращается не логическое выражение, а целое... Она спросила, какие ещё есть отличия
C++ Объявление класс в нескольких файлах http://www.cyberforum.ru/cpp-beginners/thread611260.html
Можноли как-то объявление одного класса разбить на несколько заголовочных файлов? Хочу создать класс, в котором основной функционал находится в одной паре *.h, *.cpp, а дополнительный в других. Что бы при написании программ можно было подключать нужный мне функционал и не компилировать лишнее.
C++ Нарисовал блок схему нужно проверить Рисую блок схему первый раз за 2 года.. вот код программы #include <windows.h> #include <string> #include <iostream> #include <iomanip> #include <fstream> #include <stdio.h> #include <conio.h> #include <stdlib.h> подробнее

Показать сообщение отдельно
serjeka
1 / 1 / 0
Регистрация: 17.08.2010
Сообщений: 81

Программа должна моделировать взаимодействие серверной части и некоторого множества клиентских частей - C++

22.06.2012, 16:46. Просмотров 913. Ответов 0
Метки (Все метки)

Описание задачи

Необходимо реализовать программу в ввиде одного исполняемого файла под Win32 (console или GUI) с использованием С/С++. Программа должна моделировать взаимодействие серверной части и некоторого множества клиентских частей (n <= 10). Серверная часть предназначена для обработки некоторых абстрактных транзакций, поступающих от множества клиентов. Серверная и клиентские процедуры должны исполняться в отдельных потоках. Система должна быть однонаправленной, т.е. клиенты отправляют данные и не ждут ответа. Данные, поступающие от клиентов должны помещаться в очередь с учетом их приоритета. Серверная часть должна извлекать данные из очереди и помещать в файл записи о них в текстовом формате.
Записи в log-файле должны отражать:
- время записи в log в системных тиках;
- идентификатора клиента;
- приоритет;
- время формирования запроса в системных тиках.

Добавлено через 14 часов 47 минут
помоите пожалуйста реализовать данный проект. я не имел опыта написания подобных проектов.

Добавлено через 1 час 37 минут
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <functional>
#include <vector>
#include "queue.h"
#include "Except.h"
#include <fstream>
#include <iostream>
#include "ClientServer.h"
#include <boost/thread/thread.hpp>
#include <boost/thread/condition_variable.hpp>
#include <Windows.h>
using namespace std;
typedef struct tagTDATA {
    int cPriority;     //приоритет запроса 0 – 255 (0 – наивысший приоритет)
    DWORD dwTicks;     //время формирования запроса в системных тиках
    DWORD dwClientId;  //уникальный идентификатор клиента
    char *Data;        //абстрактные данные
} TDATA, *PTDATA;
DWORD startTickCount = GetTickCount();
PTDATA create_request()
{
    PTDATA ptr = new tagTDATA();
    char *chPt = "Client";
    ptr->cPriority =rand() % 255 - 1;
    ptr->dwTicks = GetTickCount() - startTickCount;
    ptr->dwClientId = 7;
    ptr->Data = chPt;
    return ptr;
}
void process(PTDATA req)
{
    cout << "Priority: " << req->cPriority  << endl
        << "System Tick: " << req->dwTicks << endl
        << "Client ID: " << req->dwClientId << endl
         << "Data: " << req->Data << endl << endl;
}
class request_queue 
{
public:
    void enqueue(PTDATA req)
    {
        bool notify = false;
        {
            boost::unique_lock<boost::mutex> lock (mtx);
            notify = queue.empty(); 
            queue.push(req); 
        }      
        if (notify)
            cv.notify_one();
    }
    PTDATA dequeue()
    {
        boost::unique_lock<boost::mutex> lock (mtx);
        while (queue.empty())
            cv.wait(lock);
        PTDATA req = queue.top();
        queue.pop();
        return req;
    }
private:
    boost::mutex mtx;
    boost::condition_variable cv;
    priority_queue<PTDATA, vector<PTDATA>, greater<PTDATA> > queue;
};
request_queue PQ;
void client_thread()
{
    int n = 10;
    while (n)
    {
        n--;
        PTDATA req = create_request();
        PQ.enqueue(req);
    }
}
void server_thread()
{
    while (PTDATA req = PQ.dequeue())
    {
        process(req);
    }
}
int main()
{
    boost::thread thr1(client_thread);
    boost::thread thr2(server_thread);
    thr1.join();
    thr2.join();
    return 0;
}


что не так. матерится на выделенное...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru