C#命名管道进程通信(一单向)

客户端:
这是本机的两个进程进行通信,发送数据和就收数据最好是新开一个线程,因为当客户端或者发送端手法数据的时候会导致线程的阻塞。

    class Program
    {
        static void Main(string[] args)
        {
            Thread pipeThread = new Thread(SendData);
            pipeThread.IsBackground = true;
            pipeThread.Start();
            pipeThread.Join();
        }
        private static void SendData()
        {
            while(true)
            {
                try
                {
                    _pipeClient = null;
                    _pipeClient = new NamedPipeClientStream(".", "closePipe", PipeDirection.InOut, PipeOptions.None, TokenImpersonationLevel.Impersonation);
                    _pipeClient.Connect();
                    StreamWriter sw = new StreamWriter(_pipeClient);
                    Console.WriteLine("Please input messages sent 0.");
                    string msg = Console.ReadLine();
                    sw.WriteLine(msg);
                    sw.Flush();
                    Thread.Sleep(1000);
                    sw.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }           
        }

        private static NamedPipeClientStream _pipeClient;
    }

服务端

    class Program
    {
        static void Main(string[] args)
        {
            Thread receiveDataThread = new Thread(ReceiveDataFromClient);
            receiveDataThread.IsBackground = true;
            receiveDataThread.Start();
            receiveDataThread.Join();
        }
        private static void ReceiveDataFromClient()
        {
            while (true)
            {
                try
                {
                    _pipeServer = new NamedPipeServerStream("closePipe", PipeDirection.InOut, 2);
                    _pipeServer.WaitForConnection(); //Waiting  
                    StreamReader sr = new StreamReader(_pipeServer);                    
                    string recData = sr.ReadLine();
                    if (recData == "Exit")
                    {
                        Console.WriteLine("Pipe Exit.");
                        Process.GetCurrentProcess().Kill();
                    }
                    else
                    {
                        Console.WriteLine(recData);
                    }
                    Thread.Sleep(1000);
                    sr.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
        private static NamedPipeServerStream _pipeServer;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值