一个最简单的C#管道(NamePipe)全双工通信实例
命名管道NamedPipe,可以用于进程间通信。本文创建两个exe工程,做为两个进程。一个为管道客户端,一个为管道服务端。互为双向通信。例子摘自MSDN。用控制台或者winForm,启动时,调用对应的函数,并打好断点就可以做测试了。
首先需要引用命名空间,using System.IO; using System.IO.Pipes;
注:下面读写用了两种方式。
1)服务端
a.使用using非托管释放。管道名称是testpipe。而工作方式是双向的InOut。
b.等待连接时阻塞的,直到客户端连接进来。
c.pipeServer.Read也是阻塞的,等待接收客户端发送的消息,数据存在data中。
d.创建一个streamWriter并向客户端发送数据
using (NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.InOut))
{
pipeServer.WaitForConnection();
var data = new byte[10240];
var count = pipeServer.Read(data, 0, 10240);
using (StreamWriter sw = new StreamWriter(pipeServer))
{
sw.AutoFlush = true;
sw.WriteLine("send to client");
}
}
2)客户端
a.使用using非托管释放。创建客户端。
b.连接到服务端,调用Connect的时候,服务端如果有断点可以看到跳转到了waitForConnection下面。
c.使用pipeClient.Write向服务端发送值,服务端的pipeServer.Read响应。
d.创建一个StreamReader ,接收服务端发送过来的值。存放在temp中
using (NamedPipeClientStream pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.InOut))
{
pipeClient.Connect();
using (StreamReader sr = new StreamReader(pipeClient))
{
var data = new byte[10240];
data = System.Text.Encoding.Default.GetBytes("send to server");
pipeClient.Write(data, 0, data.Length);
string temp;
while ((temp = sr.ReadLine()) != null) ;
}
}
末:以上简短的两段程序就实现了C#命名管道在进程间的双向通信,简单易懂。但是要实现完整的容错和自定义通信协议,还是需要做很多的工作。
一个最简单的C#管道(NamePipe)全双工通信实例相关推荐
- socketpair创建双向通信的管道(全双工通信)
欢迎访问个站,你想要的,可能这里有 首页_码到城攻码到城攻分享但不限于IT技术经验技巧.软硬资源.所闻所见所领会等,站点提供移动阅读.文章搜索.在线留言.支付打赏.个人中心.免签支付等功能https: ...
- 使用命名管道进程之间通信(转)
原文地址:http://www.cnblogs.com/yukaizhao/archive/2011/08/04/system-io-pipes.html 命名管道: 命名管道的功能比匿名管道更强大, ...
- Linux-C语言-利用有名管道简单实现两个进程间的全双工通信
有名管道特点: 1.有名管道是对无名管道的改进,它可以使互不相关的两个进程互相通信,并且在文件系统中可见,可以通过文件名来找到. 2.半双工的通信方式,进程通过文件IO来操作有名管道. 3.有名管道遵 ...
- 区块链100讲:Truffle——一个更简单的部署智能合约的方法
本期<区块链100讲>我们将介绍一个更简单的部署智能合约的方法:Truffle. 1 什么是Truffle ? Truffle是针对基于以太坊的Solidity语言的一套开发框架.本身基于 ...
- Centos 6.5下一个SNMP简单配置(snmp protocol v3,监控宝)
Centos 6.5下一个SNMP简单配置(snmp protocol v3.监控宝) jom_ch@2014/7/25 1,安装 >yum -y install net-snmp net-sn ...
- php 自定义超全局,一个超级简单的 PHP 超全局变量管理扩展
一个超级简单的 PHP 超全局变量管理扩展(自卖自夸) 介绍 SG 全称 Superglobals,它的诞生为了方便快捷操作 PHP 预定义的超全局变量,用户定义的超全局变量. 如果在非 CLI 模式 ...
- html制作nba网页,NBA篮球_实用电脑小技巧:通俗解答html 自己动手建一个非常简单的网页_沪江英语...
沪江小编:对于很多人来说,电脑应该算是使用频率最高的工具了,可是你真的会用电脑么?实用电脑小技巧,用最简单明了的方式给你无比有趣的电脑使用新体验. html是什么,什么是html通俗解答: 通俗的讲h ...
- 欢迎大家讨论:只想要一个最简单的XXX系统,功能最简化的XXX系统
我们国人总有一种思想,能简化的简化,但是往往我们把真正应该简单化的东西反而没简单化,例如我们的人际关系.一些比较传统的封建思想,往往这些最应该简化的东西是更加搞得深入.复杂. 其实很多东西是简化不来的 ...
- 教师节html源码,教师节_实用电脑小技巧:通俗解答html 自己动手建一个非常简单的网页_沪江英语...
沪江小编:对于很多人来说,电脑应该算是使用频率最高的工具了,可是你真的会用电脑么?实用电脑小技巧,用最简单明了的方式给你无比有趣的电脑使用新体验. html是什么,什么是html通俗解答: 通俗的讲h ...
最新文章
- 空空排错日志:OCS错误日志14501等解决办法
- 50个查询系列-第二个查询
- 【最详细】数据结构(C语言版 第2版)第七章课后习题答案 严蔚敏 等 编著
- 【opencv图像基础】图像常见的通道模式:RGB、YUV、HSV
- 双步位移求解特征值matlab,数值分析——带双步位移的QR分解求特征值算法
- python处理select
- 2019最新资料!共7T
- ftp/sftp定时自动上传文件脚本(CentOS)
- Linux下的Vivado安装——以Ubuntu为例
- bios error 装系统acpi_win10系统升级后开机提示acpi bios error的解决方法
- linux最好的mp4软件,【良心推荐】5款好用的MP4视频编辑器
- pano2vr 制作交互热点模板时常显示文字
- Tomcat重启服务器
- 论文阅读-Detecting and Recovering Sequential DeepFake Manipulation(SeqFakeFormer)
- MFI认证与PPID
- Python之Jacobi迭代计算
- 面部刮痧:别样的美丽疗法
- 为什么 Storm 比 Hadoop 快?是由哪几个方面决定的?
- Linux如何使用WIFI连接abd
- 图像超分算法小合集二:FSRCNN、DRCN、RDN、EDSR