Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2012, 12:16   #1
swat1193
Пользователь
 
Регистрация: 23.10.2012
Сообщений: 18
По умолчанию межпрограммный обмен данными

Помогите сделать , чтобы при вводе в одной консоле(сервере) выдавала на другую консоль(клиент) текст
В данный момент этот код выдаёт только числа
Сервер
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#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;
}
//---------------------------------------------------------------------------

Клиент
Код:
//---------------------------------------------------------------------------
#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);
printf("Number = %d\n", num);
}
while (ReadCount!=0);

printf("Disconnected...\n");
getch();
		return 0;
}
//---------------------------------------------------------------------------
swat1193 вне форума Ответить с цитированием
Старый 22.11.2012, 13:39   #2
swat1193
Пользователь
 
Регистрация: 23.10.2012
Сообщений: 18
По умолчанию

немного изменил
Сервер
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include<conio.h>
#include<stdio.h>
#include<windows.h>

//---------------------------------------------------------------------------
// Программа иллюстрирует работу со специальным инструментом
// межпрограммного обмена данными - пайпами. Данная программа является
// сервером. Она создаёт пайп и ждёт присоединения к нему программы-клиента.
// После успешного соединения просит вводить текст и записывать их в пайп.
// Другая программа - клиент читает текст из пайпа и выдаёт их на консоль
#pragma argsused
 char s[80];
int num;
unsigned long WriteCount;
HANDLE PipeHandle;
int main(int argc, char* argv[])
{


//Создаём пайп с именем 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 tekst: \n");
gets(s);
num = atoi(s);  //Вводим с консоли число и записываем его в пайп
WriteFile(PipeHandle, &num, sizeof(num), &WriteCount, NULL);
}


getch();

FlushFileBuffers(PipeHandle);
DisconnectNamedPipe(PipeHandle);
CloseHandle(PipeHandle);

        return 0;
}
//---------------------------------------------------------------------------
Клиент
Код:
//---------------------------------------------------------------------------
#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);
printf("Tekst = %d\n", num);
}
while (ReadCount!=0);

printf("Disconnected...\n");
getch();
		return 0;
}
//---------------------------------------------------------------------------
Не получается сделать чтобы текст выводился у клиента
ПРимер: У сервера ввожу programmersforum
У клиента выводится 0 (надо чтобы выводились programmersforum)
swat1193 вне форума Ответить с цитированием
Старый 22.11.2012, 15:30   #3
swat1193
Пользователь
 
Регистрация: 23.10.2012
Сообщений: 18
По умолчанию

Всё, уже сделал
swat1193 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
UDP обмен данными Dima DDM Работа с сетью в Delphi 0 21.11.2011 22:37
Обмен данными saggy Работа с сетью в Delphi 1 14.02.2010 13:10
Обмен данными между С++ и С# Stellvertreter Общие вопросы C/C++ 0 14.11.2008 14:18
Обмен данными по сети Altera Работа с сетью в Delphi 2 23.02.2008 00:13
обмен данными с сервером BioS Работа с сетью в Delphi 15 12.02.2007 15:32