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();
        }
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索测试
, 代码
, request
, console
, WriteLine
, codeproject
App通信
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-12-05 22:23:35

C#中用NamedPipe进程间通信的相关文章

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

共享内存 共享内存是进程间通信中最简单的方式之一. 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区. 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针.当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改. 关于共享内存 当一个程序加载进内存后,它就被分成叫作页的块. 通信将存在内存的两个页之间或者两个独立的进程之间. 总之,当一个程序想和另外一个程序通信的时候,那内存将会为这两个程序生成一块公共的

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

        在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码.细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我们如何使用Java语言来使用系统的Binder机制来进行进程间通信呢?这就是本文要介绍的Android系统应用程序框架层的用Java语言来实现的Binder接口了.        熟悉Android系统

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

        在前面一篇文章Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路中,介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得Service Manager远程接口的,即defaultServiceManager函数的实现.Server获得了Service Manager远程接口之后,就要把自己的Service添加到Service Manager中去,然后把自己启动起来,等待Cl

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

   上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client.Server.Service Manager和驱动程序Binder四个组件构成.本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能.         既然Service Manager组件是用来管理Serve

C#命名管道NamedPipe使用小结

什么是NamedPipe Named Pipe(命名管道)是一种有名字的, 建立在pipe server和一个(或多个)pipe client之间的单向或双向的通信管道. 一个命名管道的所有实例都会共享一个相同的pipe name, 但是每个实例都有他自己的缓冲区和句柄(handle), 并且为客户端/服务器的通讯提供一个单独的导管. 这种对实例的使用使得多个pipe client同时地使用相同的named pipe成为可能. 任何进程都可以访问命名管道, 都可以接受安全检查, 这使得命名管道成

在Python中用get()方法获取字典键值的教程

  这篇文章主要介绍了在Python中用get()方法获取字典键值的教程,是Python入门中的基础知识,需要的朋友可以参考下 get()方法返回给定键的值.如果键不可用,则返回默认值None. 语法 以下是get()方法的语法: ? 1 dict.get(key, default=None) 参数 key -- 这是要搜索在字典中的键. default -- 这是要返回键不存在的的情况下默认值. 返回值 该方法返回一个给定键的值.如果键不可用,则返回默认值为None. 例子 下面的例子显示了g

在Python中用has

  这篇文章主要介绍了在Python中用has_key()方法查找键是否存在的教程,是Python入门学习中的基础知识,需要的朋友可以参考下 如果给定的键在字典可用,has_key()方法返回true,否则返回false. 语法 以下是has_key()方法的语法: ? 1 dict.has_key(key) 参数 key -- 这是要搜索在字典中的键. 返回值 此方法返回true,如果给定键在字典可用,否则返回false. 例子 下面的例子显示了has_key()方法的使用. ? 1 2 3

在Python中用keys()方法返回字典键的教程

  这篇文章主要介绍了在Python中用keys()方法返回字典键的教程,是Python入门中的基础知识,需要的朋友可以参考下 keys()方法返回在字典中的所有可用的键的列表. 语法 以下是keys()方法的语法: ? 1 dict.keys() 参数 NA 返回值 此方法返回在字典中的所有可用的键的列表. 例子 下面的例子显示keys()方法的用法. ? 1 2 3 4 5 #!/usr/bin/python   dict = {'Name': 'Zara', 'Age': 7}   pri

hibernate中用annotation注解怎么样配置TIMESTAMP类型的数据呢

问题描述 请问hibernate中用annotation注解怎么样配置TIMESTAMP类型的数据并且能自动插入和更新呢?就是相当于mysql中timeTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP;这样的数据列,在hibernate中怎么样用annotation注解来配置呢(不要xml的配置方式).各位大虾帮帮忙啊,跪求中-- 解决方案 解决方案二:没用过注解吖.看下这个资料吧解决方案三:@Column(name="D_UP