VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • 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[] { '\0' }));
                    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[] { '\0' }));
                    string clientSendMsg = $"{ClientTicks++},Client now is {DateTime.Now.ToString("yyyyMMddHHmmssffff")}";
                    byte[] sendBytes = Encoding.UTF8.GetBytes(clientSendMsg);
                    clientStream.Write(sendBytes, 0, sendBytes.Length);
                }
            }
        }
    }
}
复制代码


相关教程