zoukankan      html  css  js  c++  java
  • C# NamedPipeServerStream NamedPipeClientStream

    The piped stream are bidirectional communcation.Meanwhile they can read and write.

    Write the NamedPipeServerStream and NamedPipeClientStream in two different hosts.

    Today I created a console application to host the NamedPipeServerStream at first,then add another console application in the same solution to host the NamedPipeClientStream. Right click the solution and click properties and select the Multiple startup projects and then set all of their start action as Start as below.

     NamedPipeServerStream part

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.IO.Pipes;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApp42
    {
        class Program
        {
            static void Main(string[] args)
            {
                NamedPipeServerStreamDemo();
                Console.ReadLine();
            } 

    static int ServerTicks = 0; static void NamedPipeServerStreamDemo() { using(NamedPipeServerStream serverStream=new NamedPipeServerStream("pipedStream202006291649")) { serverStream.WaitForConnection(); while(serverStream.IsConnected) { string msg = string.Empty; for (int i=0;i<10;i++) { msg += $" {ServerTicks++} server now is {DateTime.Now.ToString("yyyyMMddHHmmssffff")},Guid is {Guid.NewGuid()}"; } byte[] byteArr = Encoding.UTF8.GetBytes(msg); serverStream.Write(byteArr, 0, byteArr.Length); byte[] readBytes = new byte[2000]; serverStream.Read(readBytes, 0, readBytes.Length); Console.WriteLine(Encoding.UTF8.GetString(readBytes).Trim(new char[] { '' })); Thread.Sleep(2000); } } } } }

    NamedPipeClientStream

    using System;
    using System.Collections.Generic;
    using System.IO.Pipes;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                NamedPipeClientStreamDemo();
                Console.ReadLine();
            }
    
            static int ClientTicks = 0;
            static void NamedPipeClientStreamDemo()
            {
                using (NamedPipeClientStream clientStream = new NamedPipeClientStream("pipedStream202006291649"))
                {
                    clientStream.Connect();
                    while (clientStream.IsConnected)
                    {
                        byte[] clientBytes = new byte[2000];
                        clientStream.Read(clientBytes, 0, clientBytes.Length);
                        Console.WriteLine(Encoding.UTF8.GetString(clientBytes).Trim(new char[] { '' }));
                        string clientSendMsg = $"{ClientTicks++},Client now is {DateTime.Now.ToString("yyyyMMddHHmmssffff")}";
                        byte[] sendBytes = Encoding.UTF8.GetBytes(clientSendMsg);
                        clientStream.Write(sendBytes, 0, sendBytes.Length);
                    }
                }
            }
        }
    }
  • 相关阅读:
    vscode 在linux中,切换语言模式快捷键
    转载大神的一篇文章----【如何选择开源许可证?】
    Kibana6.x.x——源码发布
    Kibana6.x.x——【Running "run:optimizeBuild" (run) task】出现警告信息
    linux系统为文件添加执行权限
    Kibana6.x.x——执行yarn build出现的警告信息记录
    Kibana6.x.x——导航权限控制入门
    poj 2187:Beauty Contest(计算几何,求凸包,最远点对)
    poj 2386:Lake Counting(简单DFS深搜)
    蓝桥杯 第三届C/C++预赛真题(10) 取球游戏(博弈)
  • 原文地址:https://www.cnblogs.com/Fred1987/p/13209275.html
Copyright © 2011-2022 走看看