zoukankan      html  css  js  c++  java
  • 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);
                }
            }
        }
    }
    
    
  • 相关阅读:
    部署方法
    MIME
    设置下载文件位置
    访问端口
    什么是Linq表达式?什么是Lambda表达式?
    彻底理解js中this的指向,不必硬背。
    获取checkbox状态
    checkbox复选框,如何让其勾选时触发一个事件,取消勾选时不触发
    leetcode — reverse-nodes-in-k-group
    leetcode — swap-nodes-in-pairs
  • 原文地址:https://www.cnblogs.com/server126/p/1987258.html
Copyright © 2011-2022 走看看