[項目拆解系列001]_Windows下具名管道執行個體

來源:互聯網
上載者:User

Server端

#include <Windows.h>#include <stdio.h>void main(void){    HANDLE PipeHandle;    DWORD BytesRead;    CHAR buffer[256];    if((PipeHandle = CreateNamedPipe("\\\\.\\Pipe\\Jim",        PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE,        1,        0,        0,        1000,        NULL)) == INVALID_HANDLE_VALUE){        printf("Create NamedPipe failed with error %d\n", GetLastError());        return;    }    printf("Server is now running, listenning for the client.\n");    while(1){        if(ConnectNamedPipe(PipeHandle, NULL) == 0){            printf("ConnectNamedPipe failed with error %d\n", GetLastError());            CloseHandle(PipeHandle);            return;        }        if(ReadFile(PipeHandle, buffer, sizeof(buffer), &BytesRead, NULL) <=0){            printf("ReadFile failed with error %d\n", GetLastError());            CloseHandle(PipeHandle);            return;        }        printf("%.*s\n", BytesRead, buffer);        if(DisconnectNamedPipe(PipeHandle) == 0){            printf("ReadFile failed with error %d\n", GetLastError());            return;        }    }    CloseHandle(PipeHandle);    return;}

 

Client端

#include <Windows.h>#include <stdio.h>#define PIPE_NAME "\\\\.\\Pipe\\Jim"void main(void){    HANDLE PipeHandle;    DWORD BytesWritten;    if(WaitNamedPipe(PIPE_NAME, NMPWAIT_WAIT_FOREVER) == 0){        printf("WaitNamedPipe failed with error %d\n", GetLastError());        return;    }    printf("Server is now running.");    if((PipeHandle = CreateFile(PIPE_NAME,        GENERIC_READ | GENERIC_WRITE, 0,        (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING,        FILE_ATTRIBUTE_NORMAL,        (HANDLE)NULL        )) == INVALID_HANDLE_VALUE){        printf("CreateFile failed with error %d\n", GetLastError());        return;    }    if(WriteFile(PipeHandle, "This is a test.", 15, &BytesWritten, NULL) == 0){        printf("ReadFile failed with error %d\n", GetLastError());        CloseHandle(PipeHandle);        return;    }    printf("Wrote %d bytes.\n", BytesWritten);    return;}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.