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

            }

        }

    }

}



你可能感兴趣的:(C#)