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

摘要:
转移自:http://blog.csdn.net/jinjazz/archive/2009/02/03/3861143.aspx本文只是一个测试示例。核心代码是kernel32.dll中的一组windowsapi函数。我不会在这里讨论。代码都在codeproject上。http://www.codeproject.com/KB/threads/dotnetnamedpipespart1.aspx测试有效性

转自: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发送消息后得到反馈:

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

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"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();   
        }   
    }   
}  
复制代码

客户端的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

免责声明:文章转载自《[转]C#中用NamedPipe进程间通信》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vuex源码解析及简单实现MyBatis(二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

X窗口系统的协议和架构

转自X窗口系统的协议和架构 在电脑中,X窗口系统(常称作 X11、X)是一种以位图显示的网络透明化窗口系统。本条目详述 X11 的协议及其技术架构。 X C/S模型和网络透明性 X 基于C/S模型。运作在电脑上的X 服务器程序以图形显示,并以各种客户端程序进行通信。X 服务器接受图形输出(窗口画面)方面的请求,并回传使用者的输入(键盘、鼠标)。...

雷达信号的旁瓣对消和旁瓣匿影

1、雷达受干扰照射 对雷达来说,最难对付的干扰是有源干扰,对雷达的有源干扰不仅仅能从雷达的主瓣进入,还可以从雷达的旁瓣进入。通常情况下,雷达在搜索状态时,干扰信号是很难直接从雷达主瓣照射进来,都是通过旁瓣进入雷达接收机,如下图所示。                                                为了降低干扰信号进入雷达接收机...

RS485通信和Modbus协议(转)

转自:http://www.51hei.com/bbs/dpj-23230-1.html     在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。除此之外,RS232接口只能实现点对点通信,不具备联网功能,...

Android系统binder机制的研究分析

binder是安卓系统中非常重要的传输方法,笔者之前所在公司进程间通信采用的都是binder方法,之前笔者只是会用,能看懂,最近趁着手头的事情告一段落,决定对它的机制做了一番研究,以下就是我的分析成果,不对之处,请各位大神多多指教。   一、为什么要用binder   二、binder的原理   三、binder的结构   四、binder传输时序   五...

通信知识科普

手机开机后的步骤:  1. 首先搜索124个信道,即所有的BCH通道, 决定收到的广播信道BCH强度, (BCH 的承载的信息是距Mobile最近的BTS; 呼叫信息);  2. 跟网络同步时间和频率, 由FCH/SCH调整频率和时间  3. 解码BCH的子通道BCCH.  4. 网络检查SIM 卡的合法身份.是否是网络允许的SIM 卡。  5. 手机的位...

erlang局域网内节点通信——艰难四步曲

http://blog.chinaunix.net/uid-22566367-id-382011.html 在Programming Erlang这本书中,在写到第十章中,主要实现的是不同节点之间的通信,书上列出了四步,其中的第一步很容易实现,依葫芦画瓢,很容易实现同一台机子上,不同节点之间的通信,运行结果和书上的完全一致。当你急切地去尝试第二步(在局域网...