ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.06.2019
Просмотров: 105
Скачиваний: 1
Лабораторная работа № 7
Студента ИТ 14-1 Красовского Абхая
Асинхронный ввод-вывод в режиме пользователя
Вариант №9
Цель: Получить навыки в следующих предметных областях:
-
работа с файлами в режиме ввода-вывода с перекрытием (input/output overlapped).
Индивидуальное задание
Реализовать задание взаимодействия процессов и асинхронного вывода-вывода с перекрытием с помощью функций CreateFile, ReadFile, WriteFile.
Код сервера:
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
char Text[] = "Этот текст получен с сервера через файл";
OVERLAPPED ov = {0};
HANDLE hFile;
if(hFile = CreateFile("C:\\Overlapped.txt", // Указатель на имя файла (устройства)
GENERIC_READ | GENERIC_WRITE, //Параметры доступа
FILE_SHARE_READ | FILE_SHARE_WRITE, //Разделяемый доступ
NULL, //безопасность
CREATE_ALWAYS, // Описание
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, // Атрибуты файла
0)) // Файл шаблона
cout << "Файл успешно создан" << endl;
if (WriteFile(hFile, Text, sizeof(Text), 0, &ov))
cout << "Строка записана в файл" << endl;
CloseHandle(hFile);
_getch();
}
Код клиента:
#include <windows.h>
#include <iostream>
#include <conio.h>
#define BUFSIZE 512
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
OVERLAPPED ov = {0};
char Buf[BUFSIZE];
HANDLE hFile = (HANDLE)OpenFile("C:\\Overlapped.txt", (LPOFSTRUCT)Buf, OF_READWRITE);
ReadFile(hFile, Buf, sizeof(Buf), 0, &ov);
cout << Buf << endl;
CloseHandle(hFile);
_getch();
}
Результат: