首页 > 其他 > 详细

[转]C#中用NamedPipe进程间通信

时间:2014-03-11 02:24:52      阅读:539      评论:0      收藏:0      [点我收藏+]

转自:http://blog.csdn.net/jinjazz/archive/2009/02/03/3861143.aspx

本文只是一个测试例子,核心代码是kernel32.dll中的一组windows api函数,这里不深入研究,代码都在codeproject上。

http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx

测试效果如下,可以做到aspx和给console app发送消息后得到反馈:

bubuko.com,布布扣

console app为服务器端代码如下

 

bubuko.com,布布扣
bubuko.com,布布扣
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"5125125000false);   
            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();   
        }   
    }   
}  
bubuko.com,布布扣
bubuko.com,布布扣

 

客户端的aspx代码如下

 

bubuko.com,布布扣
bubuko.com,布布扣
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;   
    }   
}  
bubuko.com,布布扣
bubuko.com,布布扣

 

测试环境为windows vista和windows2003

[转]C#中用NamedPipe进程间通信,布布扣,bubuko.com

[转]C#中用NamedPipe进程间通信

原文:http://www.cnblogs.com/luohengstudy/p/3592063.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!