最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++ 進(jìn)程通訊(命名管道)的實(shí)例

 更新時(shí)間:2017年08月11日 07:49:56   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇C/C++ 進(jìn)程通訊(命名管道)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

服務(wù)端代碼:

// pipe_server.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
 
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <ctime>
 
int main(int argc, _TCHAR* argv[])
{
   srand(time(NULL));
 
  char buf[256] = "";
   DWORD rlen = 0;
   HANDLE hPipe = CreateNamedPipe(
     TEXT("\\\\.\\Pipe\\mypipe"),            //管道名
     PIPE_ACCESS_DUPLEX,                  //管道類型
     PIPE_TYPE_MESSAGE|PIPE_READMODE_MESSAGE|PIPE_WAIT,  //管道參數(shù)
     PIPE_UNLIMITED_INSTANCES,              //管道能創(chuàng)建的最大實(shí)例數(shù)量
     0,                          //輸出緩沖區(qū)長(zhǎng)度 0表示默認(rèn)
     0,                          //輸入緩沖區(qū)長(zhǎng)度 0表示默認(rèn)
     NMPWAIT_WAIT_FOREVER,                //超時(shí)時(shí)間
     NULL);                        //指定一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu),或者傳遞零值
 
  if (INVALID_HANDLE_VALUE == hPipe)
   {
     printf("Create Pipe Error(%d)\n",GetLastError());
   }
   else
   {
     printf("Waiting For Client Connection...\n");
 
    if(!ConnectNamedPipe(hPipe, NULL))  //阻塞等待客戶端連接。
     {
       printf("Connection failed!\n");
     }
     else
     {
       printf("Connection Success!\n");
     }
 
    while (true)
     {
       if(!ReadFile(hPipe,buf,256,&rlen,NULL)) //接受客戶端發(fā)送過(guò)來(lái)的內(nèi)容
       {      
         printf("Read Data From Pipe Failed!\n");
         break;
       }
       else
       {
         printf("From Client: data = %s, size = %d\n", buf, rlen);
         
         char wbuf[256] = "";
         sprintf(wbuf, "%s%d", wbuf, rand()%1000);
         DWORD wlen = 0;
         WriteFile(hPipe, wbuf, sizeof(wbuf), &wlen, 0);  //向客戶端發(fā)送內(nèi)容
         printf("To Client: data = %s, size = %d\n", wbuf, wlen);
         Sleep(1000);
       }
     }
     FlushFileBuffers(hPipe);
     DisconnectNamedPipe(hPipe);
     CloseHandle(hPipe);//關(guān)閉管道
   }
 
  system("pause");
   return 0;
}

客戶端代碼:

// pipe_client.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
 
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <ctime>
 
int main(int argc, _TCHAR* argv[])
{
   srand(time(NULL));
 
  DWORD wlen = 0;
   Sleep(1000);//等待pipe的創(chuàng)建成功!
 
  BOOL bRet = WaitNamedPipe(TEXT("\\\\.\\Pipe\\mypipe"), NMPWAIT_WAIT_FOREVER);
 
  if (!bRet)
   {
     printf("connect the namedPipe failed!\n");
     return 0;
   }
 
  HANDLE hPipe = CreateFile(      //管道屬于一種特殊的文件
     TEXT("\\\\.\\Pipe\\mypipe"),  //創(chuàng)建的文件名
     GENERIC_READ | GENERIC_WRITE,  //文件模式
     0,                //是否共享
     NULL,              //指向一個(gè)SECURITY_ATTRIBUTES結(jié)構(gòu)的指針
     OPEN_EXISTING,          //創(chuàng)建參數(shù)
     FILE_ATTRIBUTE_NORMAL,      //文件屬性(隱藏,只讀)NORMAL為默認(rèn)屬性
     NULL);              //模板創(chuàng)建文件的句柄
 
  if (INVALID_HANDLE_VALUE == hPipe)
   {
     printf("open the exit pipe failed!\n");
   }
   else
   {
     while(true)
     {
       char buf[256] = "";
       sprintf(buf,"%s%d",buf,rand()%1000);
       if(WriteFile(hPipe,buf,sizeof(buf),&wlen,0)==FALSE)  //向服務(wù)器發(fā)送內(nèi)容
       {
         printf("write to pipe failed!\n");
         break;
       }
       else
       {
         printf("To Server: data = %s, size = %d\n", buf, wlen);
         char rbuf[256] = "";
         DWORD rlen = 0;
         ReadFile(hPipe, rbuf, sizeof(rbuf), &rlen, 0);  //接受服務(wù)發(fā)送過(guò)來(lái)的內(nèi)容
         printf("From Server: data = %s, size = %d\n", rbuf, rlen);
       }
       Sleep(1000);
     }
     CloseHandle(hPipe);//關(guān)閉管道
   }
 
  system("pause");
   return 0;
}

以上這篇C/C++ 進(jìn)程通訊(命名管道)的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • c++ 基于opencv 識(shí)別、定位二維碼

    c++ 基于opencv 識(shí)別、定位二維碼

    這篇文章主要介紹了c++ 基于opencv 識(shí)別、定位二維碼,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-03-03
  • C++中不得不說(shuō)的map容器

    C++中不得不說(shuō)的map容器

    大家好,本篇文章主要講的是C++中不得不說(shuō)的map容器,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 詳解C++泛型裝飾器

    詳解C++泛型裝飾器

    這篇文章主要為大家介紹了C++的泛型裝飾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之棧簡(jiǎn)單操作

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之棧簡(jiǎn)單操作

    這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之棧簡(jiǎn)單操作的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • 一文解密C++中的多態(tài)機(jī)制

    一文解密C++中的多態(tài)機(jī)制

    眾所周知C++語(yǔ)言的三大特性:封裝、多態(tài)、繼承,其中多態(tài)就是去完成某個(gè)行為,但是會(huì)根據(jù)不同的對(duì)象產(chǎn)生不同的狀態(tài),下面小編就來(lái)帶大家深入了解一下C++的多態(tài)機(jī)制吧
    2023-07-07
  • QT實(shí)現(xiàn)文件傳輸功能

    QT實(shí)現(xiàn)文件傳輸功能

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)文件傳輸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語(yǔ)言源碼實(shí)現(xiàn)俄羅斯方塊

    C語(yǔ)言源碼實(shí)現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言源碼實(shí)現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 深入C中常用的三種排序方法總結(jié)以及探討分析

    深入C中常用的三種排序方法總結(jié)以及探討分析

    本篇文章是對(duì)C中常用的三種排序方法總結(jié)以及探討分析的概述,需要的朋友參考下
    2013-05-05
  • 詳解C++ cout格式化輸出完全攻略

    詳解C++ cout格式化輸出完全攻略

    這篇文章主要介紹了詳解C++ cout格式化輸出完全攻略,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例

    C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例

    這篇文章主要介紹了C/C++ 實(shí)現(xiàn)遞歸和棧逆序字符串的實(shí)例的相關(guān)資料,這里提供實(shí)例代碼幫助大家學(xué)習(xí)掌握,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

达日县| 鸡东县| 宣武区| 景德镇市| 台湾省| 浪卡子县| 长海县| 安岳县| 台湾省| 鹤山市| 响水县| 化隆| 石棉县| 兴隆县| 华蓥市| 漠河县| 嘉禾县| 雅江县| 永济市| 富民县| 沙河市| 东至县| 剑阁县| 芮城县| 平度市| 永城市| 府谷县| 盖州市| 鄂温| 兴仁县| 綦江县| 临夏市| 泸水县| 枣阳市| 青神县| 远安县| 河东区| 临湘市| 汉沽区| 开封市| 肃南|