• c# remoting 小实例


    ////先定义接口

    using System;
    using System.Text;
    
    namespace IComm
    {
        /// <summary>
        /// send messages delegate
        /// </summary>
        /// <param name="Ms"></param>
        public delegate void SendEventHandler(string Ms);
        public interface ICom
        {
            /// <summary>
            /// send function
            /// </summary>
            /// <param name="Ms"></param>
            /// <returns></returns>
            void SendMs(string Ms);
        }
    }
    
    

    ////obj类

    using System;
    using System.Text;
    
    using IComm;
    
    namespace RemotingObj
    {
        public class UsersInfo:MarshalByRefObject,ICom
        {
            public static event SendEventHandler SendEventArgs;
            public void SendMs(string Ms)
            {
                if (SendEventArgs != null)
                    SendEventArgs(Ms);
            }
            public override object InitializeLifetimeService()
            {
                return null;
            }
        }
    }
    
    

    ////服务端代码

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;
    
    using IComm;
    using RemotingObj;
    
    
    namespace RemotingServer
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.toolStripStatusLabel1.ForeColor = Color.Red;
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
                    TcpServerChannel server = new TcpServerChannel(1234);
                    ChannelServices.RegisterChannel(server, false);
                    RemotingConfiguration.RegisterWellKnownServiceType(typeof(UsersInfo), "abc", WellKnownObjectMode.SingleCall);
                    RemotingObj.UsersInfo.SendEventArgs += delegate(string s) { this.textBox1.Text = s; };
                    this.toolStripStatusLabel1.Text = "服务启动成功!";
                }
                catch (Exception ex) { this.toolStripStatusLabel1.Text = ex.Message; }
            }
        }
    }
    
    

    ///客户端

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Runtime;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime;
    using System.Runtime.Remoting;
    using System.Runtime.Remoting.Channels;
    using System.Runtime.Remoting.Channels.Tcp;
    
    using IComm;
    using RemotingObj;
    
    namespace RemotingClient
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.toolStripStatusLabel1.ForeColor = Color.Red;
            }
            public ICom obj = null;
            private void Form1_Load(object sender, EventArgs e)
            {
                try
                {
                    ChannelServices.RegisterChannel(new TcpClientChannel(), false);
                    obj = (ICom)Activator.GetObject(typeof(ICom), "tcp://200.1.3.27:1234/abc");
                    if (obj != null)
                    {
                       
                        this.toolStripStatusLabel1.Text = "与服务器连接成功!";
                    }
                }
                catch (Exception ex) { this.toolStripStatusLabel1.Text = ex.Message; }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (obj != null && !string.IsNullOrEmpty(this.textBox1.Text))
                {
                    obj.SendMs(this.textBox1.Text);
                }
            }
        }
    }
    
    
  • 相关阅读:
    [LeetCode]题解(python):094-Binary Tree Inorder Traversal
    [LeetCode]题解(python):093-Restore IP Addresses
    [LeetCode]题解(python):092-Reverse Linked List II
    [LeetCode]题解(python):091-Decode Ways
    第二阶段团队冲刺1
    进度总结报告十三
    梦断代码阅读笔记02
    第一阶段对各组的意见评价
    进度总结报告十二
    软件开发冲刺10
  • 原文地址:https://www.cnblogs.com/server126/p/1987258.html
Copyright © 2020-2023  润新知