当前位置: 首页 > news >正文

RemoTing 搭建简单实现

今天对C# Remoting进行了初步的学习,废话不说...



RemotingModel: Talker.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace RemotingModel
{
    /// <summary>
    ///
    /// </summary>
   public class Talker:MarshalByRefObject
    {
       /// <summary>
       /// 说话
       /// </summary>
       /// <param name="word"></param>
       public void Talk(string word)
       {
           System.Console.WriteLine(word);
       }
    }
}
服务器端:是一个控制台,首先要添加对System.Runtime.Remoting的引用,然后添加对RemotingModel的引用
using System;
using System.Collections.Generic;
using System.Text;
 
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
 
using RemotingModel;
 
namespace RemotingServer
{
    class Program
    {
        static void Main(string[] args)
        {
            //注册通道
            TcpServerChannel channel = new TcpServerChannel("TalkChannel", 8090); //端口随便取
            ChannelServices.RegisterChannel(channel, true);
 
           //注册远程对象
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(Talker),
                "Talker",  
               WellKnownObjectMode.SingleCall);
           Console.ReadLine();
        }
    }
}
客服端:窗体:两个textBox,一个button,设置textBox为多行。上面的textBox为:txtContent,下面的为:txtWord
 

添加引用(添加方法同上)
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using RemotingModel;
namespace RemotingClient
{
    public partial class Form1 : Form
    {
        private Talker _talk = null;
        public Form1()
        {
            InitializeComponent();
        }
       private void btnSend_Click(object sender, EventArgs e)
        {
            try
            {
                //操作远程对象
                _talk.Talk(txtWord.Text.Trim());
                txtContent.Text = "发送成功" + txtWord.Text.Trim();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
       private void Form1_Load(object sender, EventArgs e)
        {
            try {
                //注册通道
                TcpClientChannel channel = new TcpClientChannel();
                ChannelServices.RegisterChannel(channel, true);
               //获取远程对象
                _talk=(Talker) Activator.GetObject(typeof(Talker),"TCP://localhost:8090/Talker");
            }
            catch(Exception ex){
                MessageBox.Show(ex.Message);
            }
        }
    }
}
好了,下面看看结果:
 



注:以上所有操作均在同一台电脑,并且在同一个解决方案执行。
接下来会跟大家分享Remoting在局域网里的使用

转载于:https://www.cnblogs.com/cenwenlin/p/9405181.html

相关文章:

  • CentOS中利用Docker安装RabbitMQ
  • MySQL DBA技术难度低为什么工资比Oracle高?
  • Kubernetes中StatefulSet介绍
  • Flutter 中的 Animations(二)
  • Spring Cloud Commons 普通抽象
  • zabbix中文问题汇总
  • join
  • 华为S5300系列交换机V200R001SPH027升级补丁
  • 正则表达式小结
  • sql查询语句
  • [转] 梦里Babel知多少(一)
  • 性能测试 tps持续走低,响应时间持续增加,瓶颈分析
  • BZOJ1497 最大获利
  • 探秘varian:优雅的发布部署程序
  • 论“小猪佩奇如何从营销到吸金一路开挂前行”!
  • [PHP内核探索]PHP中的哈希表
  • JavaScript 如何正确处理 Unicode 编码问题!
  • __proto__ 和 prototype的关系
  • ➹使用webpack配置多页面应用(MPA)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • cookie和session
  • flask接收请求并推入栈
  • HashMap ConcurrentHashMap
  • JAVA_NIO系列——Channel和Buffer详解
  • Mysql数据库的条件查询语句
  • MySQL数据库运维之数据恢复
  • PHP变量
  • React-redux的原理以及使用
  • 从setTimeout-setInterval看JS线程
  • 回流、重绘及其优化
  • 如何选择开源的机器学习框架?
  • 推荐一个React的管理后台框架
  • 中文输入法与React文本输入框的问题与解决方案
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Prometheus VS InfluxDB
  • #include<初见C语言之指针(5)>
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (转) Face-Resources
  • (转)Linq学习笔记
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .Net 垃圾回收机制原理(二)
  • .net分布式压力测试工具(Beetle.DT)
  • .net快速开发框架源码分享
  • .NET是什么
  • .NET微信公众号开发-2.0创建自定义菜单
  • ?
  • @Mapper作用
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [.net] 如何在mail的加入正文显示图片
  • [100天算法】-不同路径 III(day 73)
  • [Android]使用Git将项目提交到GitHub
  • [C++]priority_queue的介绍及模拟实现
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理