[转]C#中用NamedPipe进程间通信
转自: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进程间通信的更多相关文章
- 进程间通信之popen和pclose函数
常见的操作是创建一个管道连接到另一个进程,然后读其输出或向其输入端发送数据,为此,标准I/O库提供了两个函数popen和pclose.这两个函数实现的操作是:创建一个管道,调用fork产生一个子进程, ...
- Windows系统编程之进程间通信
Windows系统编程之进程间通信作者:北极星2003来源:看雪论坛(www.pediy.com)Windows 的IPC(进程间通信)机制主要是异步管道和命名管道.(至于其他的IPC方式,例如内存映 ...
- Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6642463 在前面几篇文章中,我们详细介绍了A ...
- Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系 ...
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信 ...
- Linux IPC(Inter-Process Communication,进程间通信)之管道学习
1.标准流管道 管道操作支持文件流模式,用来创建链接还有一个进程的管道,通过函数popen和pclose popen的详细介绍在本blog:Linux 多进程学习中有具体介绍 2.无名管道(PIPE) ...
- 四十九、进程间通信——System V IPC 之消息队列
49.1 System V IPC 介绍 49.1.1 System V IPC 概述 UNIX 系统存在信号.管道和命名管道等基本进程间通讯机制 System V 引入了三种高级进程间通信机制 消息 ...
- linux内核剖析(十一)进程间通信之-共享内存Shared Memory
共享内存 共享内存是进程间通信中最简单的方式之一. 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区. 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程 ...
- Linux进程间通信机制
Linux支持管道.信号.unix system V三种IPC(Inter-Process-Communication)机制.以下分别对三种机制加以简单介绍. 一.信号机制: 信号又称作软中断,用来通 ...
随机推荐
- MYSQL - 外键、约束、多表查询、子查询、视图、事务
MYSQL - 外键.约束.多表查询.子查询.视图.事务 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生 ...
- 利用redis的bitmap实现用户签到功能
一.场景需求 适用场景如签到送积分.签到领取奖励等,大致需求如下: 比如签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等. 如果连续签到中断,则重置计数,每月初重置计数. 显 ...
- (转)获取android手机内部存储空间和外部存储空间的参数 && 如何决定一个apk的安装位置
转:http://blog.csdn.net/zhandoushi1982/article/details/8560233 获取android文件系统的信息,需要Environment类和StatFs ...
- 云-腾讯云-云通信:云通信(IM)
ylbtech-云-腾讯云-云通信:云通信(IM) 企业数字化转型的通信助手,让通信触达全球,智联万物 1.返回顶部 1. 云通信(Instant Messaging,IM)承载亿级 QQ 用户即时通 ...
- NPM 使用介绍(包管理工具,解决NodeJS代码部署上的很多问题)
引用地址:http://www.runoob.com/nodejs/nodejs-npm.html NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问 ...
- JS break语句和continue语句
break语句 描述:break语句,用于无条件结束各种循环(退出循环)和switch. 说明:一般情况下,需要在break语句之前加一个条件判断.换句话说:就是条件成立了,就退出循环 continu ...
- Spring有关面试问题
问题清单: 什么是Spring框架?Spring框架有哪些主要模块? 使用Spring框架有什么好处? 什么是控制反转(IOC)?什么是依赖注入? 请解释下Spring中的IOC? BeanFacto ...
- AYITOJ-括号序列-栈的入门
题目描述 给定一个由括号组成的字符串 问其是否为一个合法的括号序列 合法的括号序列的定义如下 1. 空字符串是合法的括号序列 2. 若字符串A是合法的括号序列, 那么{A},[A],(A)也是合法的括 ...
- 新建mapping
新建索引: PUT logstash-redis-log-2017.12 PUT logstash-redis-log-2017.12/_mapping/redis-log { &quo ...
- 4_6.springboot2.xWeb开发之错误处理机制
1.SpringBoot默认的错误处理机制 默认效果:1).浏览器,返回一个默认的错误页面 浏览器发送请求的请求头: 2).如果是其他客户端,默认响应一个json数据 原理: 默认情况下,Sp ...