Добавил:
abhai2013@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab7

.docx
Скачиваний:
5
Добавлен:
30.06.2018
Размер:
87.16 Кб
Скачать

Лабораторная работа № 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();

}

Результат:

Соседние файлы в предмете Операционные системы