当前位置: 首页 > news >正文

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

相关文章:

  • C++类四个默认函数---构造函数、析构函数、拷贝函数、赋值函数
  • 实现两个DataTable的联合查询
  • 数学之美:GOOGLE新闻归类算法与余弦定理
  • 数据中心面临IT绩效管理的更高挑战
  • 如何确定网页和查询的相关性
  • 使用线性探测法构造哈希表
  • AjaxGWT
  • jquery获得radio选中项
  • 桌面风格的Web网站
  • UDP与TCP协议
  • 歌德巴赫猜想的C#语言算法实现
  • 深入理解HTTP协议
  • 一个超准的性格测试,大家不妨试试看……
  • ADT与类的设计
  • Symbian下stl::String类中Find算法的实现
  • 分享一款快速APP功能测试工具
  • 《深入 React 技术栈》
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Go 语言编译器的 //go: 详解
  • Java基本数据类型之Number
  • java小心机(3)| 浅析finalize()
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • JS学习笔记——闭包
  • SpringBoot 实战 (三) | 配置文件详解
  • vue-cli3搭建项目
  • 百度地图API标注+时间轴组件
  • 从零开始的无人驾驶 1
  • 给第三方使用接口的 URL 签名实现
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 目录与文件属性:编写ls
  • 如何利用MongoDB打造TOP榜小程序
  • 网络应用优化——时延与带宽
  • 小程序测试方案初探
  • 小李飞刀:SQL题目刷起来!
  • 译自由幺半群
  • 怎样选择前端框架
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #13 yum、编译安装与sed命令的使用
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (2020)Java后端开发----(面试题和笔试题)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C#)获取字符编码的类
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (笔试题)分解质因式
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • ***利用Ms05002溢出找“肉鸡
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net 发送邮件
  • :O)修改linux硬件时间