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.
What I have tried:
My Server code is:-
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";
}
}
My Client code is :-
Client::Client(void)
{
hPipe = CreateFile("\\\\.\\pipe\\mypipe",GENERIC_READ |GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(hPipe == INVALID_HANDLE_VALUE)
{
std::cout<<"pipe connection Failed:\n";
}
else
std::cout<<"pipe connected sucessfully:\n";
WriteFile(hPipe,m_buffer,cbToWrite,cbWritten,NULL);
}
bool Client::WriteFile(HANDLE,LPCVOID,DWORD,LPDWORD,LPOVERLAPPED)
{
const wchar_t *m_buffer = L"*** Hello Pipe World ***";
if (result) {
std::cout << "Number of bytes sent: " << cbWritten << std::endl;
} else {
std::cout << "Message:" << std::endl;
}
return true;
}