Автор работы: Пользователь скрыл имя, 20 Ноября 2013 в 19:33, курсовая работа
Целью данной курсовой работы является закрепление и углубление теоретических знаний в области современных операционных систем, приобретение практических навыков разработки клиент-серверных приложений, использующих стандартные механизмы межпроцессного взаимодействия.
1. Введение 1
2. Постановка задачи 2
3. Краткие теоретические основы разрабатываемой темы 3
4. Алгоритм работы 6
5. Руководство пользователя 11
6. Результаты работы 12
7. Заключение 13
8. Список использованных источников 13
9. Приложение с исходными кодами разработанных программ 14
SetEvent(srv1R);
SetEvent(srv2R);
char* file = (char*) MapViewOfFile(fMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
char mas [256];
unsigned int total, avail;
while (1){
system("cls");
cout<<"\nМЕНЮ\n\n1 - Получить системные цвета и код раскладки клавиатуры\n2 - Получить идентификатор и дескриптор текущего процесса\nq - Выход\n";
switch (getch()){
case '1':
system("cls");
server1 = OpenEvent(EVENT_ALL_ACCESS, 0, L"server1");
if (WaitForSingleObject(server1, 0)==-1){
cout<<"\n\tОШИБКА\n\n\tСервер не подключен\n";
CloseHandle(server1);
getch();
break;
}
ResetEvent(server1);
SetEvent(srv1R);
WaitForSingleObject(server1,-
strcpy (mas, file);
cout<<endl<<mas<<endl;
CloseHandle(server1);
getch();
SetEvent(srv1R);
break;
case '2':
system("cls");
server2 = OpenEvent(EVENT_ALL_ACCESS, 0, L"server2");
if (WaitForSingleObject(server2, 0)==-1){
cout<<"\n\tОШИБКА\n\n\tСервер не подключен\n";
CloseHandle(server2);
getch();
break;
}
ResetEvent(server2);
SetEvent(srv2R);
WaitForSingleObject(server2,-
strcpy (mas, file);
cout<<endl<<mas<<endl;
CloseHandle(server2);
getch();
SetEvent(srv2R);
break;
case 'q':
UnmapViewOfFile(file);
CloseHandle(fMapping);
CloseHandle(hFile);
SetEvent(srv1R);
SetEvent(srv2R);
return;
}
}}
Сервер 1:
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
HANDLE server1=CreateEvent(
srv1R=CreateEvent(NULL,TRUE,
char* HEXtoSTR(char*str,DWORD N){
sprintf(str, "%x", N);
return str;
}
char* ItoSTR(char*str,DWORD N){
sprintf(str,"%d",N);
return str;
}
char* ansv(char*str){
str[0]=0;
char buf[16];
DWORD color=GetSysColor(COLOR_
strcat(str,"Цвета:\nCOLOR_
strcat(str,ItoSTR(buf,color%
strcat(str,", ");color/=256;
strcat(str,ItoSTR(buf,color%
strcat(str,", ");color/=256;
strcat(str,ItoSTR(buf,color%
color=GetSysColor(COLOR_
strcat(str,"\nCOLOR_3DLIGHT: ");
strcat(str,ItoSTR(buf,color%
strcat(str,", ");color/=256;
strcat(str,ItoSTR(buf,color%
strcat(str,", ");color/=256;
strcat(str,ItoSTR(buf,color%
HKL hkl=GetKeyboardLayout(0);
strcat(str,"\nКод раскладки клавиатуры: ");
strcat(str,HEXtoSTR(buf,(
return str;
}
void refresh(){
fMapping = OpenFileMapping(FILE_MAP_ALL_
system("cls");
if(!fMapping){
cout<<"\nКлиент не подключен";
CloseHandle(fMapping);
return;
}
if(!WaitForSingleObject(
cout<<"\nОжидание запроса от клиента";
CloseHandle(fMapping);
return;
}
cout<<"\nЗапрос получен";
char* file = (char*) MapViewOfFile(fMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0),
str[256];
////
ansv(str);
CopyMemory(file,str,256);
////
UnmapViewOfFile(file);
CloseHandle(fMapping);
SetEvent(server1);
}
void main (){
setlocale(LC_ALL,"rus");
while(1){
refresh();
WaitForSingleObject(srv1R,-1);
ResetEvent(srv1R);
}
// CloseHandle(server1);
}
Сервер 2:
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
HANDLE server2=CreateEvent(
srv2R=CreateEvent(NULL,TRUE,
char* HEXtoSTR(char*str,DWORD N){
sprintf(str, "%x", N);
return str;
}
char* ItoSTR(char*str,DWORD N){
sprintf(str,"%d",N);
return str;
}
char* ansv(char*str){
str[0]=0;
char buf[16];
DWORD procId=GetCurrentProcessId();
strcat(str,"Идентификатор процесса: ");
strcat(str,ItoSTR(buf,procId))
HANDLE hndl=OpenProcess(PROCESS_
strcat(str,"\nДескриптор процесса: ");
strcat(str,HEXtoSTR(buf,(
CloseHandle(hndl);
return str;
}
void refresh(){
fMapping = OpenFileMapping(FILE_MAP_ALL_
system("cls");
if(!fMapping){
cout<<"\nКлиент не подключен";
CloseHandle(fMapping);
return;
}
if(!WaitForSingleObject(
cout<<"\nОжидание запроса от клиента";
CloseHandle(fMapping);
return;
}
cout<<"\nЗапрос получен";
char* file = (char*) MapViewOfFile(fMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0),
str[256];
////
ansv(str);
CopyMemory(file,str,256);
////
UnmapViewOfFile(file);
CloseHandle(fMapping);
SetEvent(server2);
}
void main (){
setlocale(LC_ALL,"rus");
while(1){
refresh();
WaitForSingleObject(srv2R,-1);
ResetEvent(srv2R);
}
// CloseHandle(server1);
}
Информация о работе Исследование механизмов межпроцессорного взаимодействия