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

Обмен данными между программами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
D4gon
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 36
24.11.2012, 15:02     Обмен данными между программами #1
Здравствуйте
Помогите сделать программу, чтобы при наборе все символов в сервере они сразу же отображались в клиенте, вот похожее, но только тут на нажатие enter, а надо мгновенное отображение
Заранее благодарю
вот сервер
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
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<windows.h>
 
//---------------------------------------------------------------------------
// Программа иллюстрирует работу со специальным инструментом
// межпрограммного обмена данными - пайпами. Данная программа является
// сервером. Она создаёт пайп и ждёт присоединения к нему программы-клиента.
// После успешного соединения просит вводить числа и записывает их в пайп.
// Другая программа - клиент читает числа из пайпа и выдаёт их на консоль
#pragma argsused
int main(int argc, char* argv[])
{
char s[80];
int num;
unsigned long WriteCount;
HANDLE PipeHandle;
 
//Создаём пайп с именем Data_Ch. ВНИМАНИЕ! Для корректной интерпретации строки
// с именем вместо одного слеша ставим два!
PipeHandle = CreateNamedPipe("\\\\.\\pipe\\Data_Ch",PIPE_ACCESS_OUTBOUND,PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 3, 10000, 10000, 5000, NULL);
if (INVALID_HANDLE_VALUE!=PipeHandle)              
{
printf("Wait to connect...\n");
}
else
{
printf("Error!\n");
}
 
if (ConnectNamedPipe(PipeHandle, NULL))  // Ждём пока к пайпу присоединится клиент
{
printf("Connecting success!\n");
}
 
 
 
 
while (s[0]!='q')
{
printf("Input number: \n");
gets(s);
num = atoi(s);  //Вводим с консоли число и записываем его в пайп
WriteFile(PipeHandle, &num, sizeof(num), &WriteCount, NULL);
}
 
 
getch();
 
FlushFileBuffers(PipeHandle);
DisconnectNamedPipe(PipeHandle);
CloseHandle(PipeHandle);
 
        return 0;
}
//---------------------------------------------------------------------------
вот клиент
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
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<windows.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
int num;
unsigned long ReadCount;
 
HANDLE PipeHandle;
 
//Присоединяемся к пайпу
PipeHandle = CreateFile("\\\\.\\pipe\\Data_Ch", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
if (PipeHandle)
{
printf("Connecting success!\n");
}
else
{
printf("Error!\n");
}
 
 
do 
{ //Читаем данные из пайпа
ReadFile(PipeHandle, &num, sizeof(num), &ReadCount, NULL);
printf("Number = %d\n", num);
}
while (ReadCount!=0);
 
printf("Disconnected...\n");
getch();
        return 0;
}
//---------------------------------------------------------------------------
Добавлено через 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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<windows.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
int num;
unsigned long ReadCount;
 
HANDLE PipeHandle;
 
//Присоединяемся к пайпу
PipeHandle = CreateFile("\\\\.\\pipe\\Data_Ch", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
if (PipeHandle)
{
printf("Connecting success!\n");
}
else
{
printf("Error!\n");
}
 
 
do
{ //Читаем данные из пайпа
ReadFile(PipeHandle, &num, sizeof(num), &ReadCount, NULL);
if (num==13) {
printf("\n");
}else
{
printf("%c", num);
     }
 }
while (ReadCount!=0);
 
printf("Disconnected...\n");
getch();
        return 0;
 
}
//---------------------------------------------------------------------------
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 15:02     Обмен данными между программами
Посмотрите здесь:

Обмен данными между двумя процессами C++
C++ Технология обмен данными между приложениями
Обмен данными между процессами с помощью файлов, которые отображаются в память C++
C++ Обмен данными между двумя приложениями по системе клиент-сервер
C++ межпрограммный обмен данными
Обмен данными между процессами в консольных приложениях C++
C++ Как организовать обмен данными между двумя разными программами?
Обмен данными между процессами C++
Обмен данными между 2 клиентами через интернет C++
C++ Обмен данными между процессами
Провести обмен данными между двумя массивами по условию C++
C++ Особенности и порядок работы с указателями, обмен данными между динамическими массивами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
24.11.2012, 22:08     Обмен данными между программами #2
используй getche()
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
#include<conio.h>
#include<stdio.h>
#include<windows.h>
 
//---------------------------------------------------------------------------
// Программа иллюстрирует работу со специальным инструментом
// межпрограммного обмена данными - пайпами. Данная программа является
// сервером. Она создаёт пайп и ждёт присоединения к нему программы-клиента.
// После успешного соединения просит вводить числа и записывает их в пайп.
// Другая программа - клиент читает числа из пайпа и выдаёт их на консоль
//#pragma argsused
int main(int argc, char* argv[])
{
    //char s[80];
//    int num;
    unsigned long WriteCount;
    HANDLE PipeHandle;
 
    //Создаём пайп с именем Data_Ch. ВНИМАНИЕ! Для корректной интерпретации строки
    // с именем вместо одного слеша ставим два!
    PipeHandle = CreateNamedPipe("\\\\.\\pipe\\Data_Ch",PIPE_ACCESS_OUTBOUND,PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, 3, 10000, 10000, 5000, NULL);
    if (INVALID_HANDLE_VALUE!=PipeHandle)
    {
        printf("Wait to connect...\n");
    }
    else
    {
        printf("Error!\n");
    }
 
    if (ConnectNamedPipe(PipeHandle, NULL))  // Ждём пока к пайпу присоединится клиент
    {
        printf("Connecting success!\n");
    }
    char c;
    while (true)
    {
        //printf("Input number: \n");
        c = getche();
        //num = atoi(s);  //Вводим с консоли число и записываем его в пайп
        WriteFile(PipeHandle, &c, sizeof(c), &WriteCount, NULL);
    }
 
    getch();
 
    FlushFileBuffers(PipeHandle);
    DisconnectNamedPipe(PipeHandle);
    CloseHandle(PipeHandle);
 
    return 0;
}
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
//#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<windows.h>
 
//---------------------------------------------------------------------------
 
//#pragma argsused
int main(int argc, char* argv[])
{
//int num;
unsigned long ReadCount;
 
HANDLE PipeHandle;
 
//Присоединяемся к пайпу
PipeHandle = CreateFile("\\\\.\\pipe\\Data_Ch", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0);
if (PipeHandle)
{
    printf("Connecting success!\n");
}
else
{
    printf("Error!\n");
}
 
    char c;
    do
    { //Читаем данные из пайпа
        ReadFile(PipeHandle, &c, sizeof(c), &ReadCount, NULL);
        printf("%c", c);
    }
    while (ReadCount!=0);
 
    printf("Disconnected...\n");
    getch();
        return 0;
}
D4gon
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 36
25.11.2012, 14:32  [ТС]     Обмен данными между программами #3
igorrr37, большое спасибо
Yandex
Объявления
25.11.2012, 14:32     Обмен данными между программами
Ответ Создать тему
Опции темы

Текущее время: 22:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru