命名管道的实例 [英] Example of Named Pipes

查看:145
本文介绍了命名管道的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何写一个简单的 - 为它工作需要的最低限度 - 测试应用程序,说明如何使用ICP /命名管道

例如,如何将一个写一个控制台应用程序,其中1写着Hello World的方案2和方案2接收消息和回复罗杰,对程序1。


解决方案

 使用系统;
使用System.IO;
使用System.IO.Pipes;
使用System.Linq的;
使用System.Text;
使用System.Threading.Tasks;命名空间的ConsoleApplication1
{
    类节目
    {
        静态无效的主要(字串[] args)
        {
            startserver的();
            Task.Delay(1000).Wait();
            //客户
            VAR的客户=新NamedPipeClientStream(PipesOfPiece);
            client.Connect();
            StreamReader的读者=新的StreamReader(客户端);
            StreamWriter的作家=新的StreamWriter(客户端);            而(真)
            {
                字符串输入=到Console.ReadLine();
                如果(String.IsNullOrEmpty(输入))破;
                writer.WriteLine(输入);
                writer.Flush();
                Console.WriteLine(reader.ReadLine());
            }
        }        静态无效startserver的()
        {
            Task.Factory.StartNew(()=>
            {
                VAR服务器=新NamedPipeServerStream(PipesOfPiece);
                server.WaitForConnection();
                StreamReader的读者=新的StreamReader(服务器);
                StreamWriter的作家=新的StreamWriter(服务器);
                而(真)
                {
                    变种线= reader.ReadLine();
                    writer.WriteLine(的string.join(,line.Reverse()));
                    writer.Flush();
                }
            });
        }
    }
}

How do I write a simple--bare minimum needed for it to work--test application that illustrates how to use ICP/Named Pipes?

For example, how would one write a console application where Program 1 says "Hello World" to Program 2 and Program 2 receives message and replies "Roger That" to Program 1.

解决方案

using System;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            StartServer();
            Task.Delay(1000).Wait();


            //Client
            var client = new NamedPipeClientStream("PipesOfPiece");
            client.Connect();
            StreamReader reader = new StreamReader(client);
            StreamWriter writer = new StreamWriter(client);

            while (true)
            {
                string input = Console.ReadLine();
                if (String.IsNullOrEmpty(input)) break;
                writer.WriteLine(input);
                writer.Flush();
                Console.WriteLine(reader.ReadLine());
            }
        }

        static void StartServer()
        {
            Task.Factory.StartNew(() =>
            {
                var server = new NamedPipeServerStream("PipesOfPiece");
                server.WaitForConnection();
                StreamReader reader = new StreamReader(server);
                StreamWriter writer = new StreamWriter(server);
                while (true)
                {
                    var line = reader.ReadLine();
                    writer.WriteLine(String.Join("", line.Reverse()));
                    writer.Flush();
                }
            });
        }
    }
}

这篇关于命名管道的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆