欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

服務(wù)端代碼:

// pipe_server.cpp : 定義控制臺應(yīng)用程序的入口點。
//
 
#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ù)量
     0,                          //輸出緩沖區(qū)長度 0表示默認(rèn)
     0,                          //輸入緩沖區(qū)長度 0表示默認(rèn)
     NMPWAIT_WAIT_FOREVER,                //超時時間
     NULL);                        //指定一個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ā)送過來的內(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 : 定義控制臺應(yīng)用程序的入口點。
//
 
#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,              //指向一個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ā)送過來的內(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)程通訊(命名管道)的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言實現(xiàn)ATM自動取款機(jī)系統(tǒng)的示例代碼

    C語言實現(xiàn)ATM自動取款機(jī)系統(tǒng)的示例代碼

    ATM自動取款機(jī)系統(tǒng)是銀行業(yè)務(wù)流程中十分重要且必備的環(huán)節(jié)之一,在銀行業(yè)務(wù)流程中起著承上啟下的作用。本文將用C語言實現(xiàn)一個簡單的ATM自動取款機(jī)系統(tǒng),需要的可以參考一下
    2022-08-08
  • opencv3/C++關(guān)于移動對象的輪廓的跟蹤詳解

    opencv3/C++關(guān)于移動對象的輪廓的跟蹤詳解

    今天小編就為大家分享一篇opencv3/C++關(guān)于移動對象的輪廓的跟蹤詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++超詳細(xì)講解邏輯操作符

    C++超詳細(xì)講解邏輯操作符

    在C語言中,邏輯運算符有&&、||、!;&&表示“與”的意思,需要兩端的表達(dá)式的值都為true,該式的值才為true。||表示“或”的意思,兩端的表達(dá)式的值只要有一端為true,該式的值就為true。!表示“非”的意思,將該式的真值換成相反的真值,即false和true互換
    2022-06-06
  • C語言實現(xiàn)字符串拼接和拷貝

    C語言實現(xiàn)字符串拼接和拷貝

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)字符串拼接和拷貝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 帶你理解C語言中的漢諾塔公式

    帶你理解C語言中的漢諾塔公式

    大家好,本篇文章主要講的是帶你理解C語言中的漢諾塔公式,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C語言實現(xiàn)YUV文件轉(zhuǎn)JPEG格式

    C語言實現(xiàn)YUV文件轉(zhuǎn)JPEG格式

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言實現(xiàn)將YUV文件轉(zhuǎn)為JPEG格式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • 詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)

    詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)

    這篇文章主要介紹了詳解C語言gets()函數(shù)與它的替代者fgets()函數(shù)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • C++的友元和內(nèi)部類你了解嗎

    C++的友元和內(nèi)部類你了解嗎

    這篇文章主要為大家介紹了C++的友元和內(nèi)部類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言實現(xiàn)經(jīng)典掃雷小游戲的示例代碼

    C語言實現(xiàn)經(jīng)典掃雷小游戲的示例代碼

    掃雷游戲是在一個指定的二維空間里,隨機(jī)布置雷,把不是雷的位置都找出來,在你點一個位置的時候它會顯示它周圍全部雷的個數(shù),根據(jù)這個線索去找 ,會更容易贏。本文將用C語言實現(xiàn)這一經(jīng)典游戲,感興趣的可以嘗試一下
    2022-11-11
  • C++面試八股文之智能指針詳解

    C++面試八股文之智能指針詳解

    智能指針是C++11引入的類模板,用于管理資源,行為類似于指針,但不需要手動申請、釋放資源,本文主要為大家介紹了它的相關(guān)知識,需要的可以參考一下
    2023-06-06

最新評論