Listing 2: client.cpp

#include <stdio.h>
#include <string.h>

#include "nmpipe.h"

int main(int argc, char **argv)
{
    while (TRUE) {
        nmpipe_cConnector Connector("\\\\.\\PIPE\\MYPIPE.PIP");

        if (Connector.InError()) {
            break;
        }


        const char *pWriteData = argv[1] != NULL ?
            argv[1] : "<no data>";
        unsigned long cbWriteData = strlen(pWriteData) + 1;
    
        if (Connector.Write(&cbWriteData, sizeof(cbWriteData)) != nmpipeOK) {
            break;
        }

            if (Connector.Write(pWriteData, cbWriteData) != nmpipeOK) {
            break;
        }
    
        unsigned long cbData;
    
        if (Connector.Read(&cbData, sizeof(cbData), 5000) != nmpipeOK) {
            break;
        }
    
        char *pData = new char [cbData];
    
        if (Connector.Read(pData, cbData, 5000) != nmpipeOK) {
            delete pData;
            break;
        }
    
        printf("%s\n", pData);
    
        delete pData;
    }
    
    return 0;
}
//End of File