Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
1

Передачай значений переменных между двумя разными програмами с помощью каналов PIPE

01.04.2015, 13:36. Показов 3015. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте уважаемые программисты!!
Нужна помащь с передачай значений переменных между двумя разными програмами,в общем есть к примеру такие две програмки :

1 прога :
C
1
2
3
4
5
6
7
8
9
#include<.....>
 
void main ()
{ 
    int a,b,z;
    a =5;
    b = 10;
    z = a+b;    
}
и 2 прога :
C
1
2
3
4
5
6
7
8
#include<...>
void main ()
{
 ....
......
 a+b;   
 
}
Так проста накинул пример!!!!
Вот в чём вопрос хочу передать значения а и б в вторую програмку и чтоб втарая програмка мне вернула суму этих чисел и записала их в переменную z первой програмки!!Я знаю 100% что это можна зделать а как зделать ну не понемаю проста как припаять PIPE!!!!!
Накиньте к моему примерчуку как это зделать с каналами PIPE,а то некак не понемаю как привезать!!! За ранее спасибо!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2015, 13:36
Ответы с готовыми решениями:

Передача значений переменных между двумя программами на разных компьютерах
Как организовать передачу значений переменных между двумя программами? Нужно передать значение...

Алгоритм поиска минимума функции 2-х переменных двумя разными методами
требуется составить код нахождения минимума произвольной функции 2 переменных 2мя разными методами...

Создание каналов (pipe)
Есть задание по криптографии где нужно написать клиент-сервреное приолжение. Сервер должен...

Создание ПО для использования его разными програмами(нужен совет)
Что нужно: Создать ПО (типа *.dll) при етом дать возможность использовать входные даные в ПО и...

1
16 / 14 / 4
Регистрация: 21.11.2014
Сообщений: 320
03.04.2015, 15:04  [ТС] 2
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Вот решение!!!!
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
СЕРВЕР
#include <windows.h>
#include <stdio.h>
#include <conio.h>
BOOL   fConnected; // Флаг успешного создания канала
HANDLE hNamedPipe; // Идентификатор канала Pipe
LPSTR  lpszPipeName = "\\\\.\\pipe\\$MyFirstPipe"; // Имя создаваемого канала
char   szBuf[512]; // Буфер для приема данных из канала
DWORD  cbRead; // Количество байт данных, принятых через канал
 
int main()
{
// Создаем канал Pipe с именем lpszPipeName
hNamedPipe = CreateNamedPipe(
lpszPipeName, PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES, 512, 512, 5000, NULL);
// Если возникла ошибка, завершаем работу приложения
if(hNamedPipe == INVALID_HANDLE_VALUE)
{
printf("Error Pipe Creating!!!\n");
getch();
return 0;
}
// Ожидаем соединения со стороны клиента
fConnected = ConnectNamedPipe(hNamedPipe, NULL);
// Если возникла ошибка, завершаем работу приложения
if(!fConnected)
{
printf("Error Pipe Connecting!!!\n");
CloseHandle(hNamedPipe);
getch();
return 0;
}
// Получение данных из канала
if(ReadFile(hNamedPipe, szBuf, 512, &cbRead, NULL))
printf("Received %d bytes: <%s>\n", cbRead, szBuf);
else printf("Error Data Transfer!!!\n");
CloseHandle(hNamedPipe);
getch();
return 0;
}
 
КЛИЕНТ
#include <windows.h>
#include <stdio.h>
#include <conio.h>
HANDLE hNamedPipe; // Идентификатор канала Pipe
DWORD  cbWritten; // Количество байт, переданных через канал
char   szBuf[256]; // Буфер для передачи данных
LPSTR  lpszPipeName = "\\\\.\\pipe\\$MyFirstPipe"; // Имя создаваемого канала
 
int main()
{
// Установка соединения с процессом PIPES
hNamedPipe = CreateFile(lpszPipeName, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
// Если возникла ошибка, завершаем работу приложения
if(hNamedPipe == INVALID_HANDLE_VALUE)
{
printf("Error Pipe Creating!!!\n");
getch();
return 0;
}
// Передача данных серверному процессу
strcpy(szBuf,"Test Pipe Connection");
if(!WriteFile(hNamedPipe, szBuf, strlen(szBuf) + 1, &cbWritten, NULL))
// Если произошла ошибка, выдаем сообщение
printf("Error Data Transfer!!!\n");
else printf("Transferred %d bytes: <%s>\n", cbWritten, szBuf);
// Закрываем идентификатор канала
CloseHandle(hNamedPipe);
getch();
return 0;
}
Копируем Сервер в один проект,и клиент в другой проект компилируем и Вуаля))))
1
03.04.2015, 15:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2015, 15:04
Помогаю со студенческими работами здесь

Взаимодействие между двумя разными программами
Задача у меня такая, есть программа сделанная на WPF. Нужно написать программу которая будет...

Передавать числовые данные между двумя разными процессами
Добрый день! Требуется передавать числовые данные ( несколько массивов типа double ) между двумя...

VPN туннель между двумя офисами с разными vlan
Всем здравствуйте! Руководством поставлена задача соединить два удалённых офиса между собой с...

Как организовать обмен данными между двумя разными программами?
Как организовать обмен данными между двумя разными программами? Интересует именно схема этого...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru