名前付きパイプのプロセス間通信をサーバー側 C#、クライアント側 C++ で書く | puarts.com
映像・CG・画像処理関連の技術情報、個人作品の創作記録、メモなど
Category

名前付きパイプのプロセス間通信をサーバー側 C#、クライアント側 C++ で書く

公開日: 2016/09/27 | カテゴリ: C# | タグ: C#, C++, サンプル

C++ 名前付きパイプによるプロセス間通信の小さいサンプルの記事で載せた C++ のIPCサンプルで、サーバー側を C# にしたくなったので、C# に置き換えました。挙動は全く同じです。

ソースコードを載せておきます。

サーバー側の C# コード

using System.IO;
using System.IO.Pipes;

namespace PicSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var server = new NamedPipeServerStream("mynamedpipe");
            System.Console.WriteLine("クライアント起動待ち..");
            server.WaitForConnection();
            StreamWriter streamWriter = new StreamWriter(server);
            string sendMessage = string.Empty;
            do
            {
                System.Console.Write("送信する文字を入力(Endで終了): ");
                sendMessage = System.Console.ReadLine();
                streamWriter.Write(sendMessage);
                streamWriter.Flush();
                server.WaitForPipeDrain();
            } while (sendMessage != "End");

            server.Dispose();
        }
    }
}

クライアント側の C++ コード

#include <Windows.h>
#include <iostream>

void main()
{
    HANDLE pipeHandle = CreateFile(L"\\\\.\\pipe\\mynamedpipe", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (pipeHandle == INVALID_HANDLE_VALUE)
    {
        std::cout << "パイプ作成に失敗" << std::endl;
        return;
    }

    std::cout << "サーバーから受信開始" << std::endl;

    // 文字列受信
    char recvBuffer[256];    //受信バッファ
    do
    {
        recvBuffer[0] = '\0';
        DWORD recvBuffer;
        ReadFile(pipeHandle, recvBuffer, sizeof(recvBuffer), &recvBuffer, NULL);
        if (recvBuffer[0] == '\0')
        {
            continue;
        }
        recvBuffer[readBytes] = '\0';
        std::cout << "受信: " << recvBuffer << std::endl;
    } while (strcmp(recvBuffer, "End") != 0);

    CloseHandle(pipeHandle);
}


  このエントリーをはてなブックマークに追加  

にほんブログ村 デザインブログ グラフィックアートへ
Links

参考になりそうなブログやサイトを見つけたら勝手にリンクを貼らせてもらっています。
リンク削除を希望の場合はお手数ですがメールにてご一報下さい。
Ke-Sen Huang's Home Page        Disney Research        VIDEO COPILOT        AbandonedArt.org
ryoji ikeda        チームラボ        トルク with AR三兄弟        DAITO MANABE

Copyright(C)2006-2017 wsp All Rights Reserved