.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 }
源代码工程文件下载:
源代码工程文件下载 http://files.cnblogs.com/files/JiYF/RemotingSolution.rar
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
C# 版dll 程序集合并工具
原文: C# 版dll 程序集合并工具 C# 版dll 程序集合并工具 最近要开发一个控件给同事用,开发中会引用一些第三方DLL,这样交给用户很不方便,希望的效果是直接交付一个DLL文件。网上找了一些资料。 1. 使用 Costura.Fody ,这个强大之处是可以在build阶段直接将依赖的DLL合并在目标EXE中,支持非托管DLL进行mixed mode 打包,不足之处是 只能将DLL合并到EXE中,不支持DLL和DLL的合并,目前满足不了我的需求。 参考资料 http://www.cnblogs.com/instance/archive/2015/10/09/4863811.html Costura.Fody github地址:https://github.com/Fody/Costura Costura.Fody 是使用场景:最终发布只有一个EXE,将依赖的DLL合并到一个EXE中。 2. 微软的ILMerge工具。 下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630 这个支持将EXE...
- 下一篇
Go 自带的 http/server.go 的连接解析 与 如何结合 master-worker 并发模式,提高单机并发能力
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 腾讯云专栏: https://cloud.tencent.com/developer/user/1148436/activities 关于 server.go 源码的解析可以去搜下,已经有很多且还不错的文章。 正文: 从我们启动http.ListenAndServe(port,router)开始,server.go 内部最终在一个for 循环中的 accept 方法中不停地等待客户端的连接到来。 每接收到一个accept 就启动一个 gorutine 去处理当前ip的连接。也就是源码里的go c.serve(ctx)。这一个步骤在 c.serve(ctx) 它并不是简单的形式: 请求-->处理请求-->返回结果-->断开这个连接-->结束当前的 gorutine 根据我的调试结果...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群