Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа1 / mainClient
.cpp#include<windows.h>
#include<iostream.h>
#include<string.h>
#include<conio.h>
char szOutput[1000]="TEXT OF OUTPUT CLIENT";
void ReadThread(LPVOID lpvParam);
void WriteThread(LPVOID lpvParam);
int main(void)
{
char szPipeName[260]="\\\\.\\pipe\\pipeLab6";
HANDLE hPipe;
DWORD dwReadThreadId,dwWriteThreadId;
HANDLE hReadThread,hWriteThread;
char szAnswer[10]={0};
hPipe=CreateFile(szPipeName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,NULL,OPEN_EXISTING,0,NULL);
if(hPipe==INVALID_HANDLE_VALUE)
{
//FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,(LPTSTR) lpMsgBuf,0,NULL );
//cout<<lpMsgBuf<<endl;
cout<<"ERROR: CreateFile have returned INVALID_HANDLE_VALUE"<<endl;
}
else
{
hReadThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) ReadThread,(LPVOID) hPipe,0,&dwReadThreadId);
if (hReadThread == NULL)
{
//FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,(LPTSTR) lpMsgBuf,0,NULL );
//cout<<lpMsgBuf<<endl;
cout<<"ERROR: CreateThread have returned NULL"<<endl;
}
hWriteThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) WriteThread,(LPVOID) hPipe,0,&dwWriteThreadId);
if (hWriteThread == NULL)
{
//FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,(LPTSTR) lpMsgBuf,0,NULL );
//cout<<lpMsgBuf<<endl;
cout<<"ERROR: CreateThread have returned NULL"<<endl;
}
do
{
//system("cls");
cout<<"Write EXIT to exit"<<endl;
cin>>szAnswer;
}
while(strcmp(szAnswer,"EXIT"));
TerminateProcess(hReadThread,1);
TerminateProcess(hWriteThread,1);
CloseHandle(hPipe);
}
getch();
}
//*******************************************************************************
void ReadThread(LPVOID lpvParam)
{
HANDLE hPipe;
char Buffer[2]={'a','\0'};
DWORD dwReadSize;
hPipe=(HANDLE)lpvParam;
do
{
ReadFile(hPipe,(LPVOID)Buffer,1,&dwReadSize,NULL);
if(dwReadSize==1)
cout<<"Buffer";
}
while(true);
}
//*******************************************************************************
void WriteThread(LPVOID lpvParam)
{
int i=0;
HANDLE hPipe;
char szMutexName[10]="MutexLab6";
HANDLE hMutex;
DWORD dwWriteSize;
hPipe=(HANDLE)lpvParam;
while(szOutput[i]!='\0')
{
hMutex=CreateMutex(NULL,true,szMutexName);
WriteFile(hPipe,(LPVOID)&szOutput[i],1,&dwWriteSize,NULL);
ReleaseMutex(hMutex);
do
{
hMutex=OpenMutex(MUTEX_ALL_ACCESS,FALSE,szMutexName);
}
while(hMutex==NULL);
WaitForSingleObject(hMutex,INFINITE);
i++;
}
//ExitProcess(1);
}
Соседние файлы в папке Лабораторная работа1