进程之间的通信-命名管道通信

Posted 当年小清新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程之间的通信-命名管道通信相关的知识,希望对你有一定的参考价值。

管道通信包括匿名管道和命名管道,匿名管道只能用在父子进程之间,命名管道可以用在两个进程甚至跨服务器通信。

服务器端代码:

  private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                using (NamedPipeClientStream pipeClient =
              new NamedPipeClientStream("localhost", "testpipe", PipeDirection.InOut, PipeOptions.None, TokenImpersonationLevel.None))
                {
                    pipeClient.Connect();
                    using (StreamWriter sw = new StreamWriter(pipeClient))
                    {
                        sw.WriteLine(textBox1.Text);
                        sw.Flush();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

服务器端代码:

  private async  void Form1_Load(object sender, EventArgs e)
        {
          await   Task.Run(() => 
            {

                while (true)
                {
                    using (NamedPipeServerStream pipeServer =
             new NamedPipeServerStream("testpipe", PipeDirection.InOut, 1))
                    {
                        try
                        {
                            pipeServer.WaitForConnection();
                            pipeServer.ReadMode = PipeTransmissionMode.Byte;
                            using (StreamReader sr = new StreamReader(pipeServer))
                            {
                                string con = sr.ReadToEnd();

                                this.listBox1.Invoke(new Action(() =>
                                {
                                    listBox1.Items.Add(con);

                                }));


                            }
                        }
                        catch (IOException o)
                        {
                            throw o;
                        }
                    }
                }
            });
        }

 

以上是关于进程之间的通信-命名管道通信的主要内容,如果未能解决你的问题,请参考以下文章

Linux进程间通信 -- 使用命名管道

命名管道

swoole进程间如何通信

进程间通信:命名管道

进程间通信的方法

进程通信--匿名管道和命名管道