Специалист
Покинул форум
Сообщений всего: 449
Дата рег-ции: Май 2016
Репутация: 11
|
набросок сервера
с++ (Отобразить)CODE:#include <windows.h>
#include <stdio.h>
#include <conio.h>
BOOL fConnected; // Флаг успешного создания канала
HANDLE hNamedPipe; // Идентификатор канала Pipe
LPCSTR lpszPipeName = "\\\\.\\pipe\\MyPipe"; // Имя создаваемого канала
char szBuf[512]; // Буфер для приема данных из канала
DWORD cbRead; // Количество байт данных, принятых через канал
DWORD cbWritten; // Количество байт, переданных через канал
int main()
{
for (;; Sleep(10)) {
// Создаем канал Pipe с именем lpszPipeName
hNamedPipe = CreateNamedPipe(
lpszPipeName, PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES, 512, 512, 10, NULL);
// Если возникла ошибка, завершаем работу приложения
if (hNamedPipe == INVALID_HANDLE_VALUE) printf("Error Pipe Creating!!!\n");
// Ожидаем соединения со стороны клиента
fConnected = ConnectNamedPipe(hNamedPipe, NULL);
// Если возникла ошибка, завершаем работу приложения
if (!fConnected)
{
printf("Error Pipe Connecting!!!\n");
CloseHandle(hNamedPipe);
}
else
{
if (ReadFile(hNamedPipe, szBuf, 512, &cbRead, NULL)) {
printf("Received %d bytes: <%s>\n", cbRead, szBuf);
strcpy_s(szBuf, "15000");
if (WriteFile(hNamedPipe, szBuf, strlen(szBuf) + 1, &cbWritten, NULL))
printf("Transferred %d bytes: <%s>\n", cbWritten, szBuf);
else printf("Error Data Transfer!!!\n");
}else printf("Error Data Transfer!!!\n");
}
CloseHandle(hNamedPipe);
}
}
набросок клиента
с++ (Отобразить)CODE:#include <windows.h>
#include <stdio.h>
#include <conio.h>
HANDLE hNamedPipe; // Идентификатор канала Pipe
DWORD cbWritten; // Количество байт, переданных через канал
DWORD cbRead; // Количество байт данных, принятых через канал
char szBuf[512]; // Буфер для передачи данных
LPCSTR lpszPipeName = "\\\\.\\pipe\\MyPipe"; // Имя создаваемого канала
int main()
{
for (;; Sleep(10)) {
hNamedPipe = CreateFile(lpszPipeName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
printf("hNamedPipe %i \n", hNamedPipe, 0);
if (hNamedPipe == INVALID_HANDLE_VALUE)printf("Error Pipe Creating!!!\n");
else
{
strcpy_s(szBuf, "1;24049084;4;5000");
if (WriteFile(hNamedPipe, szBuf, strlen(szBuf) + 1, &cbWritten, NULL))
{
printf("Transferred %d bytes: <%s>\n", cbWritten, szBuf);
if (ReadFile(hNamedPipe, szBuf, 512, &cbRead, NULL)) printf("Received %d bytes: <%s>\n", cbRead, szBuf);
else printf("Error Data Transfer!!!\n");
}else printf("Error Data Transfer!!!\n");
}
CloseHandle(hNamedPipe);
_getch();
}
}
так подключил к Кибор
Кибор (Отобразить)CODE:external(INT, "CreateFile", "CreateFileA", "kernel32.dll");
/*
HANDLE CreateFileA(
LPCSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
*/
#define GENERIC_READ 2147483648
#define GENERIC_WRITE 1073741824
#define OPEN_EXISTING 3
#define NULL 0
string lpszPipeName="\\\\.\\pipe\\MyPipe";
int k;
k=CreateFile(lpszPipeName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
messagebox(k);
что не правильно?(Отредактировано автором: 30 Апреля, 2019 - 17:22:47) |