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

Передача данных при помощи pipe - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ указатели и выделение памяти массивам http://www.cyberforum.ru/cpp-beginners/thread422980.html
дана действительная матрица размером m x n. Определить числа b1, b2, b3.... bn равные соответственно значениям средних арифметических элементов строк. Матрица размещается в динамической памяти, а все операции обработки выполняются через указатели. мой код int _tmain(int argc, _TCHAR* argv) { int m,n,i,j; //double mas; cout<<"vvedite razmernost' matrici: ";
C++ Осуществить сдвиг элементов массива влево на K позиций Дан массив размера N и целое число K (1 ≤ K < N). Осуществить сдвиг элементов массива влево на K позиций (при этом AN перейдет в AN–K, AN–1 — в AN–K–1, …, AK+1 — в A1, а исходное значение K первых элементов будет потеряно). Последние K элементов полученного массива положить равны-ми 0. http://www.cyberforum.ru/cpp-beginners/thread422977.html
C++ цикл for
помогите составить блок - схему for(i=0;i<=n;i++) for(j=0;j<=n+1;j++) //формирование a; {if(j<=n) a=(pow(B,i+j+1)-pow(A,i+j+1))/(cnst*(i+j+1)); else //формирование B; //поиск интеграла на дискретном множеств; {for(a=0,x=A,k=0;(k<=m);k++,x=x+h)//формирование B; {a=a+Tfunc(x)*pow(x,i);}//сумма; a=(a)/(m+1); //нормировка;
C++ Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке
Дана строка, состоящая из русских слов, набранных заглавными бук-вами и разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в алфавитном порядке
C++ Задача с текстовыми файлами http://www.cyberforum.ru/cpp-beginners/thread422962.html
Помогите, пожалуйста, с задачей: В текстовом файле t записаны буквы латинского алфавита и цифры. Занести в текстовый файл h из текстового файла t только латинские буквы.
C++ Где ошибка? Пишу всё по книге Джесса Либерти "Освой самостоятельно C++ за 21 день" В книге указана следующая програмка. int #include <iostream.h> int Area(int length, int width); int main() { int lengthofyard; int widthofyard; подробнее

Показать сообщение отдельно
Сестра_Ветра
0 / 0 / 0
Регистрация: 21.04.2011
Сообщений: 91

Передача данных при помощи pipe - C++

05.01.2012, 19:37. Просмотров 3166. Ответов 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
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
//первый проект
#include <windows.h>
#include <stdio.h>
#include <conio.h>
BOOL fConnected;                                         // Флаг успешного создания канала
HANDLE hNamedPipe;                                       // Идентификатор канала Pipe
LPCWSTR lpszPipeName = L"\\\\.\\pipe\\$MyFirstPipe";     // Имя создаваемого канала 
char szBuf[512];                                         // Буфер для приема данных из канала
char message[256];                                       //сообщение
DWORD cbWritten;                                         // Количество байт, переданных через канал
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;
}
 
// Получение данных из канала
//
while (true)
{
    if (ReadFile(hNamedPipe, szBuf, 512, &cbRead, NULL))
        printf ("Received %d bytes: <%s>\n", cbRead, szBuf);
    printf ("Input message \n");
    scanf  ("%s", message);
    strcpy (szBuf, message);
    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;
}
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
//второй проект
#include <windows.h>
#include <stdio.h>
#include <conio.h>
HANDLE hNamedPipe;                                   // Идентификатор канала Pipe
DWORD cbWritten;                                     // Количество байт, переданных через канал
char szBuf[256];                                     // Буфер для передачи данных
char message[256];                                   // Сообщение
DWORD cbRead;                                        // Количество байт данных, принятых через канал
LPCWSTR lpszPipeName = L"\\\\.\\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;
}
 
// Передача данных 
//
while (true)
{
    printf ("Input message \n");
    scanf  ("%s", message);
    strcpy (szBuf, message);
    if  (!WriteFile(hNamedPipe, szBuf, strlen(szBuf) + 1, &cbWritten, NULL))
        printf("Error Data Transfer!!!\n");      // Если произошла ошибка, выдаем сообщение
    else 
        printf("Transferred %d bytes: <%s>\n", cbWritten, szBuf);
    if  (ReadFile(hNamedPipe, szBuf, 512, &cbRead, NULL))
        printf  ("Received %d bytes: <%s>\n", cbRead, szBuf);
}
CloseHandle (hNamedPipe);                // Закрываем идентификатор канала
getch();
return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru