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

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

[转]C#中用NamedPipe进程间通信的更多相关文章

  1. 进程间通信之popen和pclose函数

    常见的操作是创建一个管道连接到另一个进程,然后读其输出或向其输入端发送数据,为此,标准I/O库提供了两个函数popen和pclose.这两个函数实现的操作是:创建一个管道,调用fork产生一个子进程, ...

  2. Windows系统编程之进程间通信

    Windows系统编程之进程间通信作者:北极星2003来源:看雪论坛(www.pediy.com)Windows 的IPC(进程间通信)机制主要是异步管道和命名管道.(至于其他的IPC方式,例如内存映 ...

  3. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...

  4. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系 ...

  5. 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信 ...

  6. Linux IPC(Inter-Process Communication,进程间通信)之管道学习

    1.标准流管道 管道操作支持文件流模式,用来创建链接还有一个进程的管道,通过函数popen和pclose popen的详细介绍在本blog:Linux 多进程学习中有具体介绍 2.无名管道(PIPE) ...

  7. 四十九、进程间通信——System V IPC 之消息队列

    49.1 System V IPC 介绍 49.1.1 System V IPC 概述 UNIX 系统存在信号.管道和命名管道等基本进程间通讯机制 System V 引入了三种高级进程间通信机制 消息 ...

  8. linux内核剖析(十一)进程间通信之-共享内存Shared Memory

    共享内存 共享内存是进程间通信中最简单的方式之一. 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区. 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程 ...

  9. Linux进程间通信机制

    Linux支持管道.信号.unix system V三种IPC(Inter-Process-Communication)机制.以下分别对三种机制加以简单介绍. 一.信号机制: 信号又称作软中断,用来通 ...

随机推荐

  1. Linux下screen的应用

    在linux系统下,通常我们在执行一些运行时间比较长的任务时,放到后台执行或者使用screen和nohup都是不错的选择,因为任务执行的时间太长了,必须等待它执行完毕,在此期间可不能关掉窗口或者断开连 ...

  2. C++相对路径和绝对路径

    学习备忘 转自:http://www.cnblogs.com/vranger/p/3820783.html 电脑硬盘E盘下,建文件夹“test”,"test"下建立子文件夹“fil ...

  3. kubernetes监控和性能分析工具:heapster+influxdb+grafana

    1.部署heapster 下载 heapster 相关 yaml 文件 [root@master dashboard]# wget https://raw.githubusercontent.com/ ...

  4. jenkins实现不同角色查看不同视图

    1.安装插件Role-based Authorization Strategy 2.开启插件 系统管理>>>全局安全配置 3.创建角色和用户 4.登陆查看,只能看到travel开头的 ...

  5. 数据库小技巧:使用distinct去除重复行

    这里有2个表 问题question表 楼层question_floor表 需求:已知某用户的id为uid,实现“我的回复”功能,即查看我回复的所有问题 遇到的问题:如果直接对question表和que ...

  6. NEERC 2015 Adjustment Office /// oj25993

    题目大意: 输入n,q: 矩阵大小为n*n 每个位置的值为该位置的行数+列数 接下来q行 “R m”表示输出第m行的总和并整行消去 “C m”表示输出第m列的总和并整列消去 Sample Input ...

  7. springcloud Eureka Finchley.RELEASE 版本

    创建一个父项目cloud-demo pom.xml <?xml version="1.0" encoding="UTF-8"?> <proje ...

  8. 【daydayup】ceshuChat

    时时当勉励,岁月不待人.珍惜时间伐~ 先看看项目运行的效果 这个是在本地环境打开了两个8080端口进行模拟运行的. 先放下作者的开源地址:https://github.com/ceshu/ceshuC ...

  9. 使用vue-cli3快速适配H5项目

    跟我老大学到了一招使用vue-cli3快速适配H5项目的方法. 我之前也有进行一个版本的适配,直接使用cnpm install -g vue-cli,然后安装各种插件进行适配,见我之前的博客. 后来老 ...

  10. 单体内置对象——Global对象

    单体内置对象的定义:由ECMAScript实现提供的.不依赖于宿主环境的对象,这些对象在ECMAScript程序执行之前已经存在了.意思就是说:开发人员不必显式地实例化内置对象,因为他们已经实例化了. ...