.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 }
源代码工程文件下载:
源代码工程文件下载 http://files.cnblogs.com/files/JiYF/RemotingSolution.rar
时间: 2024-12-16 03:56:19