C#使用命名管道Pipe进行进程通信实例详解

 更新时间:2020年12月29日 11:02:18   作者:樱花花  
这篇文章主要介绍了C#使用命名管道Pipe进行进程通信实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.新建解决方案NamedPipeExample 新建两个项目:Client和Server,两者的输出类型均为“Windows 应用程序”。整个程序的结构如下图所示。

在这里插入图片描述

此Form1为Client的窗体,如下图所示。

为

后端代码,如下。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using System.IO;
using System.IO.Pipes;
using System.Security.Principal;

namespace Client
{
  public partial class Form1 : Form
  {
    NamedPipeClientStream pipeClient =
      new NamedPipeClientStream("localhost", "testpipe", PipeDirection.InOut, PipeOptions.Asynchronous, TokenImpersonationLevel.None);
    StreamWriter sw = null;
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      try
      {
        pipeClient.Connect(5000);
        sw = new StreamWriter(pipeClient);
        sw.AutoFlush = true;
      }
      catch (Exception ex)
      {
        MessageBox.Show("连接建立失败,请确保服务端程序已经被打开。");
        this.Close();
      }
    }

    private void btnSend_Click(object sender, EventArgs e)
    {
      if (sw != null)
      {
        sw.WriteLine(this.txtMessage.Text);
      }
      else
      {
        MessageBox.Show("未建立连接,不能发送消息。");
      }
    }
  }
}

此Form1为Server的窗体,如下图所示

在这里插入图片描述

后端代码,如下。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Server
{
  public partial class Form1 : Form
  {
    NamedPipeServerStream pipeServer =
      new NamedPipeServerStream("testpipe", PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous);
    public Form1()
    {
      InitializeComponent();
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void Form1_Load(object sender, EventArgs e)
    {
      ThreadPool.QueueUserWorkItem(delegate
      {
        pipeServer.BeginWaitForConnection((o) =>
        {
          NamedPipeServerStream pServer = (NamedPipeServerStream)o.AsyncState;
          pServer.EndWaitForConnection(o);
          StreamReader sr = new StreamReader(pServer);
          while (true)
          {
            this.Invoke((MethodInvoker)delegate { lsvMessage.Text = sr.ReadLine(); });

          }
        }, pipeServer);
      });
    }

    private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
    {

    }
  }
}

先运行Server再运行Client

到此这篇关于C#使用命名管道Pipe进行进程通信实例详解的文章就介绍到这了,更多相关C# Pipe进程通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Unity幸运转盘实战项目

    Unity幸运转盘实战项目

    这篇文章主要为大家详细介绍了Unity幸运转盘实战项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • C#执行EXE文件与输出消息的提取操作

    C#执行EXE文件与输出消息的提取操作

    这篇文章主要介绍了C#执行EXE文件与输出消息的提取操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C# 将字节流转换为图片的实例方法

    C# 将字节流转换为图片的实例方法

    C# 将字节流转换为图片的实例方法,需要的朋友可以参考一下
    2013-03-03
  • C#使用泛型队列Queue实现生产消费模式

    C#使用泛型队列Queue实现生产消费模式

    这篇文章介绍了C#使用泛型队列Queue实现生产消费模式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C#使用Effects给图片增加阴影效果

    C#使用Effects给图片增加阴影效果

    这篇文章介绍了C#使用Effects给图片增加阴影效果的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#实现Excel转PDF时设置内容适应页面宽度

    C#实现Excel转PDF时设置内容适应页面宽度

    将Excel转为PDF格式时,通常情况下转换出来的PDF页面都是默认的宽度大小。所以本文提供了C#实现Excel转PDF时设置内容适应页面宽度的示例代码,需要的可以参考一下
    2022-04-04
  • C#中遍历DataSet数据集对象实例

    C#中遍历DataSet数据集对象实例

    这篇文章主要介绍了C#中遍历DataSet数据集对象实例,经常忘记如何操作DataSet,这里记下来并分享,让需要的朋友可以参考下
    2014-08-08
  • C#开发之微信小程序发送模板消息功能

    C#开发之微信小程序发送模板消息功能

    这篇文章主要介绍了C#开发之微信小程序发送模板消息功能,需要的朋友可以参考下
    2017-09-09
  • 字符串阵列String[]转换为整型阵列Int[]的实例

    字符串阵列String[]转换为整型阵列Int[]的实例

    下面小编就为大家分享一篇字符串阵列String[]转换为整型阵列Int[]的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • C#交错数组用法实例

    C#交错数组用法实例

    这篇文章主要介绍了C#交错数组用法,较为详细的分析了交错数组的概念、用法并实例分析了交错数组的使用技巧,需要的朋友可以参考下
    2015-04-04

最新评论