Как отправить и прочитать сообщение между клиентом и сервисом с помощью namedpipe
I have created Client and Server Application, and when I am sending message from client to server, server is reading the message from client but it is displaying junk messages, how can I display exact message? can you please explain.
Что я уже пробовал:
Мой код сервера:-
Server::Server(void) { hPipe = CreateNamedPipe("\\\\.\\pipe\\mypipe",PIPE_ACCESS_DUPLEX,PIPE_TYPE_MESSAGE| PIPE_READMODE_MESSAGE|PIPE_WAIT,PIPE_UNLIMITED_INSTANCES,BUFSIZE,BUFSIZE,0,NULL); if(hPipe==INVALID_HANDLE_VALUE) { std::cout<<"PipeCreation Failed"; } else std::cout<<"PipeCreation Sucessful"; Run(); } void Server::Run() { std::cout<<"Server running:\n"; std::cout<<"waiting for the client:\n"; ConnectToClient(hPipe,NULL); ReadFile(hPipe,m_buffer,127 * sizeof(wchar_t),cbRead,NULL); } bool Server::ReadFile(HANDLE,LPVOID,DWORD,LPDWORD,LPOVERLAPPED) { wchar_t m_buffer[128]; DWORD cbRead=0; if (result) { m_buffer[sizeof(wchar_t)] = '\0'; std::cout << "Number of bytes read: " << cbRead <<std::endl; std::cout << "Message: " << m_buffer << std::endl; } else { std::cout << "Failed to read data from the pipe." << std::endl; } return true; } void Server::ConnectToClient(HANDLE,LPOVERLAPPED) { if(FALSE == ConnectNamedPipe(hPipe, NULL)) { std::cout<<"Pipe connection failed"; } else { std::cout<<"Pipe connection sucessful"; } }
Мой клиентский код :-
Клиент: клиент(ничтожным)
{
hPipe = функция CreateFile("\\\\.\\трубы\\mypipe",помощью generic_read |помощью generic_write,0,null,то параметра open_existing,0,null в);
if(hPipe == INVALID_HANDLE_VALUE)
{
std::cout<<"ошибка соединения труб:\n";
}
еще
с std::соиь<&ЛТ;"трубы, соединенной успешно:\Н";
WriteFile(hPipe,m_buffer,cbToWrite,cbWritten,NULL);
}
bool Client::WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED)
{
const wchar_t *m_buffer = L"*** Привет трубный мир ***";
если (результат) {
с std::соиь <&ЛТ; "количество байт, отправленных:" &ЛТ;&ЛТ; cbWritten &ЛТ;&ЛТ; функция std::епси;
} еще {
с std::соиь <&ЛТ; "сообщение:" &ЛТ;&ЛТ; функция std::епси;
}
вернуть true;
}
Richard MacCutchan
Я не могу понять, как этот код вообще может компилироваться. В ваших определениях функций отсутствуют имена всех параметров.