///先定义接口
///
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# remoting 小实例
最新推荐文章于 2016-11-29 23:24:00 发布