首页 / C# / C#中使用命名管道进行进程通信的实例
C#中使用命名管道进行进程通信的实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#中使用命名管道进行进程通信的实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1978字,纯文字阅读大概需要3分钟。
内容图文
![C#中使用命名管道进行进程通信的实例](/upload/InfoBanner/zyjiaocheng/1127/72d6f90629e24c8eaa1b7ea439ee7c4d.jpg)
1 新建解决方案NamedPipeExample
在解决方案下面新建两个项目:Client和Server,两者的输出类型均为“Windows 应用程序”。整个程序的结构如下图所示。
2 实现项目Client
Client仅包含一个名为“客户端”的窗体,如下图所示。
编写窗体后端代码,如下所示。
using System; using System.IO; using System.IO.Pipes; using System.Security.Principal; using System.Windows.Forms; namespace Client { public partial class frmClient : Form { NamedPipeClientStream pipeClient = new NamedPipeClientStream("localhost", "testpipe", PipeDirection.InOut, PipeOptions.Asynchronous, TokenImpersonationLevel.None); StreamWriter sw = null; public frmClient() { InitializeComponent(); } private void frmClient_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("未建立连接,不能发送消息。"); } } } }
3 实现项目Server
Server项目仅包含一个名为“服务端”的窗体,如下图所示。
编写窗体后端代码,如下所示。
using System; using System.IO; using System.IO.Pipes; using System.Threading; using System.Windows.Forms; namespace Server { public partial class frmServer : Form { NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.InOut,1,PipeTransmissionMode.Message,PipeOptions.Asynchronous); public frmServer() { InitializeComponent(); } private void frmServer_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.Items.Add(sr.ReadLine()); }); } }, pipeServer); }); } } }
4 运行程序
运行Server.exe与Client.exe程序,效果如下图所示。
实例中共发送三次消息,分别传递数据1,2,3。
本例中演示的客户端和服务端程序均位于本地机器,使用命名管道可以与网络上的其他进程进行通信。
原文:http://www.cnblogs.com/lonelyxmas/p/4982641.html
内容总结
以上是互联网集市为您收集整理的C#中使用命名管道进行进程通信的实例全部内容,希望文章能够帮你解决C#中使用命名管道进行进程通信的实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。