Just for fun——C#应用和Nodejs通讯
进程通信
常见的进程通讯的方法有:
- 管道(Pipe)
- 命名管道
- 信号
- 消息队列
- 其他
管道是比较简单基础的技术了,所以看看它。
Node IPC支持
Node官方文档中Net模块写着:
IPC Support
The net module supports IPC with named pipes on Windows,
and UNIX domain sockets on other operating systems.Class: net.Server
Added in: v0.1.90 This class is used to create a TCP or IPC server.
可以看到,Node在Windows上可以用命名管道进行进程通信。
测试
C#
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private const string PIPE_NAME = "hahaha_pipe";
private void btnStartListen_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(StartListen);
}
private void StartListen()
{
for (;;)
{
using (NamedPipeServerStream pipeServer =
new NamedPipeServerStream(PIPE_NAME, PipeDirection.InOut, 1))
{
try
{
pipeServer.WaitForConnection();
pipeServer.ReadMode = PipeTransmissionMode.Byte;
using (StreamReader sr = new StreamReader(pipeServer))
{
string message = sr.ReadToEnd();
txtMessage.Invoke(new EventHandler(delegate
{
txtMessage.AppendText(message + "\n");
}));
}
}
catch (IOException ex)
{
MessageBox.Show("监听管道失败:" + ex.Message);
}
}
}
}
}
设计界面很简单:
Nodejs
const net = require('net');
const PIPE_NAME = "hahaha_pipe";
const PIPE_PATH = "\\\\.\\pipe\\" + PIPE_NAME;
let l = console.log;
const client = net.createConnection(PIPE_PATH, () => {
//'connect' listener
l('connected to server!');
client.write('world!\r\n');
client.end();
});
client.on('end', () => {
l('disconnected from server');
});
代码很简单,创建一个连接,然后发送数据。
测试效果
总结
多看文档哦^_^
C\#代码下载
lalala
每天都是lalala
6.7k 声望
407 粉丝
推荐阅读
Java AtomicInteger类使用
这个问题发生的原因是++counter不是一个原子性操作。当要对一个变量进行计算的时候,CPU需要先从内存中将该变量的值读取到高速缓存中,再去计算,计算完毕后再将变量同步到主内存中。这在多线程环境中就会遇到问...
pigLoveRabbit赞 2阅读 2.5k
反编译微信小程序获取小程序前端源码wxapkg
研究反编译的原因就是我自己辛苦了半个月写的小程序,忘记备份放在桌面,心急体验Win11系统 重装系统忘记备份源码,后悔莫及。 后来网上找了反编译的教程,反编译已经上线了的小程序 于是自己尝试了一下,真的可...
TANKING赞 13阅读 10.1k评论 7
「过程详解」async await综合题
如果你之前跟我一样一直对async await熟悉又陌生的话(熟悉是可能每天都在用,陌生是针对一些组合题又丈二和尚摸不着头脑),不妨可以边看边练,总结规律,相信会逐渐清晰并有所得。本文对每个案例都详细描述了代...
wuwhs赞 5阅读 1.3k
cligetter|一款快速生成 Cli工具 开发模版的脚手架
近年来 cli工具 的开发,对于不断发展的前端生态来说,似乎也逐渐成为工程师们的必备技能。其实开发一个 cli工具 并不难,但对于前端的同学可能存在一点认知上的小门槛,特别是对于刚开始接触 cli 脚手架工具开发...
木木剑光赞 3阅读 684
一个灵活的 Node.js 多功能爬虫库 —— x-crawl
x-crawl · x-crawl 是一个灵活的 Node.js 多功能爬虫库。灵活的使用方式和众多的功能可以帮助您快速、安全、稳定地爬取页面、接口以及文件。如果你也喜欢 x-crawl ,可以给 x-crawl 存储库 点个 star 支持一下,...
coderhxl赞 2阅读 2k评论 2
从零打造你的前端开发脚手架
在实际开发过程中,我们经常都会用到脚手架来构建前端工程项目,常见的主流框架都有自己的脚手架,vue-cli、create-react-app、angular-cli。在大型公司都会有内部定制化的脚手架开发工具,使用脚手架可以大幅提...
南城FE赞 2阅读 3.1k
async/await 在 C# 语言中是如何工作的?(中)
迭代器允许你编写一个方法,然后由编译器用来实现 IEnumerable<T> 和/或 IEnumerator<T>。例如,如果我想创建一个产生斐波那契数列的枚举数,我可以这样写:
微软技术栈赞 1阅读 438
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。