C#中用NamedPipe进程间通信
本文只是一个测试例子,核心代码是kernel32.dll中的一组windows api函数,这里不深入研究,代码都在codeproject上。
http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx
测试效果如下,可以做到aspx和给console app发送消息后得到反馈:
console app为服务器端代码如下
- using System;
- using AppModule.InterProcessComm;
- using AppModule.NamedPipes;
- using System.Threading;
- namespace Server
- {
- class Program
- {
- //**c#中用namedpipe进程间通信
- //**组件代码来自codeproject
- //**http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx
- //**下载上面链接中的代码,编译AppModule.InterProcessComm和AppModule.NamedPipes两个dll
- //**引用这两个dll到本例中,运行如下代码作为服务器端测试
- //**测试代码by jinjazz(因为原作者的两个测试程序比较复杂,这里简化后供大家参考)
- static void Main(string[] args)
- {
- ServerPipeConnection PipeConnection = new ServerPipeConnection("np-test-by-jinjazz", 512, 512, 5000, false);
- Console.WriteLine("listening..");
- while (true)
- {
- try
- {
- PipeConnection.Disconnect();
- PipeConnection.Connect();
- string request = PipeConnection.Read();
- if (!string.IsNullOrEmpty(request))
- {
- Console.WriteLine("get:" + request);
- PipeConnection.Write("get:" + request);
- if (request.ToLower() == "break") break;
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- break;
- }
- }
- PipeConnection.Dispose();
- Console.Write("press any key to exit..");
- Console.Read();
- }
- }
- }
客户端的aspx代码如下
- using System;
- using System.Web;
- using AppModule.InterProcessComm;
- using AppModule.NamedPipes;
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- Response.Write(SendRequest("测试asdf"));
- }
- /// <summary>
- /// 测试namepiped客户端
- /// </summary>
- /// <param name="request">发送命令</param>
- /// <returns>返回数据</returns>
- string SendRequest(string request)
- {
- string response="";
- IInterProcessConnection clientConnection = null;
- try
- {
- clientConnection = new ClientPipeConnection("np-test-by-jinjazz", ".");
- clientConnection.Connect();
- clientConnection.Write(request);
- response=clientConnection.Read();
- clientConnection.Close();
- }
- catch (Exception ex)
- {
- clientConnection.Dispose();
- response = ex.Message;
- }
- return response;
- }
- }
测试环境为windows vista和windows2003
posted on 2009-02-04 14:54 这个Blog很强大 阅读(2105) 评论(0) 编辑 收藏 举报