命名管道跨进程通信实例2(转)

原文:http://www.cnblogs.com/jonneydong/archive/2012/03/02/2418743.html

服务端代码:

复制代码
//创建服务端,管道实例
NamedPipeServerStream serverStream = new NamedPipeServerStream("test2PIPE",
    PipeDirection.InOut,
    1,
    PipeTransmissionMode.Message,
    PipeOptions.Asynchronous);
private void Form1_Load(object sender, EventArgs e)
{
    //启用线程接收消息
    ThreadPool.QueueUserWorkItem(delegate
    {
        serverStream.BeginWaitForConnection((o) =>
        {
            NamedPipeServerStream server = (NamedPipeServerStream)o.AsyncState;
            server.EndWaitForConnection(o);
            StreamReader sr = new StreamReader(server);
            StreamWriter sw = new StreamWriter(server);
            string result = null;
            string clientName = server.GetImpersonationUserName();
            while (true)
            {
                result = sr.ReadLine();
                if (result == null || result == "bye")
                    break;
                this.Invoke((MethodInvoker)delegate
                {
                    listBox1.Items.Add(clientName + ":" + result);
                });
            }
        }, serverStream);
    });

}
复制代码

客户端代码:

复制代码
        //创建客户端连接实例
        NamedPipeClientStream clientStream = new NamedPipeClientStream("127.0.0.1",
            "test2PIPE",
            PipeDirection.InOut, PipeOptions.Asynchronous,
            System.Security.Principal.TokenImpersonationLevel.None
            );
        StreamWriter sw = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            //连接管道
            clientStream.Connect();
            sw = new StreamWriter(clientStream);
            sw.AutoFlush = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //向管道中写入内容
            sw.WriteLine(richTextBox1.Text);
        }
复制代码

显示结果:

经发现,命名管道, 其实是基于TCP/IP 来连接. 且端口为 445

当然, 我这里只是 传输一个字符串做为信息而已.! 其实仍然 可以传输自己所定义的 对象 等.(记得序列化哟..)

posted @   天马3798  阅读(435)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2013-12-23 IDisposable 接口2
2013-12-23 IDisposable接口详解
点击右上角即可分享
微信分享提示