c# remoting 小实例

来源:互联网 发布:神仙水 去痘印 知乎 编辑:程序博客网 时间:2024/05/23 12:34

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);            }        }    }}
0 0
原创粉丝点击