先定义接口using System;using System.Text;namespace IComm{ /// /// send messages delegate /// /// public delegate void SendEventHandler(string Ms); public interface ICom { /// /// send function /// /// /// 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# remoting 小实例
最新推荐文章于 2024-09-20 21:32:06 发布