0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 41
1

Синхронизация и передача

04.06.2015, 23:32. Показов 329. Ответов 0
Метки нет (Все метки)

Братцы помогите!
Вообщем есть 3 проблемы:
1) Первый сервер записывает в файл очень криво - получаются крякозябры
2) Второй сервер отказывается записывать что либо, не создаёт file mapping
3) На клиенте не работает синхронизация

Сервер1
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
#include <Windows.h>
#include <conio.h>
#include <iostream>
#include <fstream>
using namespace std;
 
int server1()
{
    HANDLE txtfile = CreateFile("labtxt.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
    HANDLE hMapFile = CreateFileMapping(txtfile, NULL, PAGE_READWRITE, 0, 0, "MyFileMappingObject");
    if (hMapFile == NULL)
    {
        cout << "Невозможно создать объект отображение файла." << endl;
        system("pause");
    }
    LPVOID lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_WRITE, 0, 0, 0);
    if (lpMapAddress == NULL)
        cout << "Невозможно создать представление файла в памяти процесса." << endl;
    DWORD dwLength;
    dwLength = *((LPDWORD)lpMapAddress);
 
    char zap[50];
    char Mes1[50] = "Количество клавиш мыши: ";
    char Mes2[50] = "Наличие колеса прокрутки: ";
    char Mes3[50];
    int kolvo = GetSystemMetrics(43);
    int nalich = GetSystemMetrics(75);
    if (GetSystemMetrics(75) == 1)
        Mes3 == "Есть";
    else
        Mes3 == "Нету";
    char zap3[50];
    _ultoa_s(nalich, zap3, 10);
    size_t len = strlen(zap);
    DWORD writes;
    WriteFile(txtfile, Mes1, len, &writes, NULL);
    WriteFile(txtfile, Mes3, len, &writes, NULL);
    WriteFile(txtfile, Mes2, len, &writes, NULL);
    WriteFile(txtfile, zap3, len, &writes, NULL);
    UnmapViewOfFile(lpMapAddress);
    CloseHandle(hMapFile);
    CloseHandle(txtfile);
    return 0;
}
 
 
void main()
{
    int vybor;
    char cd;
    do{
        system("CLS");
        setlocale(LC_ALL, "RUS");
        cout << "Передать данные первого сервера? " << endl;
        cout << "Выбор: ";
        cin >> vybor;
        switch (vybor)
        {
        case 1: server1();
            break;
        }
        cout << "Повторить?(y-для повтора)";
        cin >> cd;
    } while ((cd == 'y') || (cd == 'Y'));
}
Сервер2
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
#include <Windows.h>
#include <conio.h>
#include <iostream>
#include <fstream>
using namespace std;
 
 
int server1()
{
    MEMORYSTATUSEX statex;
    statex.dwLength = sizeof (statex);
    GlobalMemoryStatusEx(&statex);
    HANDLE txtfile = CreateFile("labtxt.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
    HANDLE hMapFile = CreateFileMapping(txtfile, NULL, PAGE_READWRITE, 0, 0, "MyFileMappingObject");
    if (hMapFile == NULL)
    {
        cout << "Невозможно создать объект отображение файла." << endl;
        system("pause");
    }
    LPVOID lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_WRITE, 0, 0, 0);
    if (lpMapAddress == NULL)
        cout << "Невозможно создать представление файла в памяти процесса." << endl;
    char zap[50];
    char Mes1[50] = "Количество клавиш мыши: ";
    char Mes2[50] = "Наличие колеса прокрутки: ";
    int kolvo = statex.ullTotalPageFile - statex.ullTotalPhys;
    int nalich = statex.ullAvailPageFile - statex.ullAvailPhys;
    char zap3[50];
    _ultoa_s(nalich, zap3, 10);
    char zap4[50];
    _ultoa_s(kolvo, zap4, 10);
    size_t len = strlen(zap);
    DWORD writes;
    WriteFile(txtfile, Mes1, len, &writes, NULL);
    WriteFile(txtfile, zap3, len, &writes, NULL);
    WriteFile(txtfile, Mes2, len, &writes, NULL);
    WriteFile(txtfile, zap4, len, &writes, NULL);
        UnmapViewOfFile(lpMapAddress);
    CloseHandle(hMapFile);
    CloseHandle(txtfile);
    return 0;
}
 
 
void main()
{
    int vybor;
    char cd;
    do{
        system("CLS");
        setlocale(LC_ALL, "RUS");
        cout << "Передать данные второго сервера? " << endl;
        cout << "Выбор:";
        cin >> vybor;
        switch (vybor)
        {
        case 1: server1();
            break;
        }
        cout << "Повторить?(y-для повтора)";
        cin >> cd;
    } while ((cd == 'y') || (cd == 'Y'));
}
Клиент
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
#include <Windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
 
int server1()
{
    HANDLE txtfile = CreateFile("labtxt.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
    HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, (LPCSTR)txtfile);
    if (hMapFile == NULL)
    {
        cout << "Невозможно создать объект отображение файла." << endl;
        system("pause");
    }
    LPVOID lpMapAddress = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
    if (lpMapAddress == NULL)
        cout << "Невозможно создать представление файла в памяти процесса." << endl;
    DWORD dwLength;
    dwLength = *((LPDWORD)lpMapAddress);
 
 
    char buffer[2048];
    OVERLAPPED ovlp = { 0 };
 
    ovlp.hEvent = CreateEvent(NULL, false, false, NULL);
    if (ovlp.hEvent == NULL) 
    {
        fprintf(stderr, "Невозможно создать событие.");
        return 2;
    }
    DWORD read;
    do 
    {
        ReadFile(txtfile, buffer, sizeof(buffer), &read, &ovlp);
        buffer[read] = 0;
        WaitForSingleObject(ovlp.hEvent, INFINITE);
        printf("%s\n", buffer);
    } 
    while (strcmp(buffer, "exit"));
    return 0;
}
 
void main()
{
    int vybor;
    char cd;
    do{
        system("CLS");
        setlocale(0, "");
        cout << "********************" << endl;
        cout << "1) Прием данных" << endl;
        cout << "Выбор:";
        cin >> vybor;
        switch (vybor)
        {
        case 1: server1();
            break;
        }
        cout << "Повторить?(y-для повтора)";
        cin >> cd;
    } while ((cd == 'y') || (cd == 'Y'));
}
P.S. за код не ругайте...делал за два часа, а мне к завтрашнему дню уже надо сдать...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2015, 23:32
Ответы с готовыми решениями:

Модуль EVO II синхронизация 50гц, На какой ножке контроллера синхронизация шим двигателя?
Частый дефект для модулей EVO II с коллекторным двигателем - нет управления двигателем при помехах...

Передача ссылки в конструктор (передача данных между формами)
Из темы &quot;Ответы на 7 самых частых вопроса по WinForms&quot; Реализовал метод № 2.3 без проблем, а вот...

Передача нескольких параметров в pthread_create (передача структуры)
Здравствуйте. Мне нужно передать последним параметром в функцию pthread_create следующую структуру...

Передача значения и передача переменной
объясните мне разницу...и с кодами пожалуйста...думаю передача значений это через...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2015, 23:32
Помогаю со студенческими работами здесь

Синхронизация
Почему-то кидает бэды в гуды, помогите разобраться... procedure TNewThread.addmemo; begin ...

УТ 11.1 БП 3.0 Синхронизация
Кто-нибудь разбирался в новой системе обмена данными, можете помочь разобраться?!

синхронизация
такой вопрос. Есть у меня таблица товаров(шифр, цена, название, описание...), и ещё одна таблица,...

Синхронизация из БП 2.0 в УТ 11.3
День добрый. Мне нужно сделать синхронизацию данных из БП 2.0 (2.0.66.60) и УТ 11.3 (11.3.4.112)....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru