.Net中Remoting通信机制简单实例

.Net中Remoting通信机制

前言:

本程序例子实现一个简单的Remoting通信案例

 

  本程序采用语言:c#

  编译工具:vs2013工程文件

  编译环境:.net 4.0

程序模块:

  • Test测试
  • Talker
  • Server端
  • Client端
  • 源代码工程文件下载

 

Test测试程序截图:

Talker类:

1 public class Talker : MarshalByRefObject
2     {
3         public void Talk(string word)
4         {
5             System.Console.WriteLine(word);
6         }
7 
8     }

 

Server端:

1  //注册通道
2             TcpServerChannel channel = new TcpServerChannel("TalkChannel",8090);
3             ChannelServices.RegisterChannel(channel,true);
4 
5             //注册远程对象
6             RemotingConfiguration.RegisterWellKnownServiceType(
7                 typeof(Talker),
8                 "Talker",
9                 WellKnownObjectMode.SingleCall);

Client端:

 1   public partial class Form1 : Form
 2     {
 3         private Talker _talk = null;
 4         public Form1()
 5         {
 6             InitializeComponent();
 7         }
 8 
 9         private void btnSend_Click(object sender, EventArgs e)
10         {
11             if (btnSend.Text.Equals("开始"))
12             {
13                 timer1.Enabled = true;
14                 btnSend.Text = "结束";
15             }
16             else
17             {
18                 timer1.Enabled = false;
19                 btnSend.Text = "开始";
20             }
21         }
22 
23         private void sendMsg(string msg)
24         {
25             try
26             {
27                 //操作远程对象
28                 _talk.Talk(msg);
29                 string newline = msg + Environment.NewLine;
30                 txtContent.Text = txtContent.Text.Insert(0, newline);
31             }
32             catch (Exception ex)
33             {
34                 MessageBox.Show(ex.Message);
35             }
36         }
37 
38         private void Form1_Load(object sender, EventArgs e)
39         {
40             try
41             {
42                 timer1.Interval = 1000;
43                 //注册通道
44                 TcpClientChannel channel = new TcpClientChannel();
45                 ChannelServices.RegisterChannel(channel, true);
46                 //获取远程对象
47                 _talk = (Talker)Activator.GetObject(typeof(Talker), "TCP://localhost:8090/Talker");
48             }
49             catch (Exception ex)
50             {
51                 MessageBox.Show(ex.Message);
52             }
53         }
54 
55         private void timer1_Tick(object sender, EventArgs e)
56         {
57             sendMsg(txtWord.Text.Trim());
58         }

 

源代码工程文件下载:

  源代码工程文件下载 https://files.cnblogs.com/files/JiYF/RemotingSolution.rar

 

posted @ 2016-11-29 23:24  JiYF  阅读(1717)  评论(0编辑  收藏  举报