C# rmi例子
2024-08-24 07:52:30
接口定义
实体定义,注意需要序列化
using System;
namespace Interface
{
[Serializable]
public class DataEntity
{
public string ReportName { get; set; }
public string ReportId { get; set; }
}
}
接口定义
namespace Interface
{
public interface IDataCenter
{
string Query();
DataEntity QueryData();
}
}
服务端
实现类
using System;
using Interface;
namespace Server
{
class DataCenterImpl : MarshalByRefObject, Interface.IDataCenter
{
#region IDataCenter 成员
public string Query()
{
return "I'm server";
}
#endregion
#region IDataCenter 成员
public Interface.DataEntity QueryData()
{
DataEntity ret = new DataEntity();
ret.ReportId = Guid.NewGuid().ToString();
ret.ReportName = "GSM报告";
return ret;
}
#endregion
}
}
主方法
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Threading;
namespace Server
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("我是服务端");
TcpServerChannel chan = new TcpServerChannel(9999);
ChannelServices.RegisterChannel(chan, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(DataCenterImpl), "server", WellKnownObjectMode.SingleCall);
Console.WriteLine("按q退出");
while (Console.ReadKey().KeyChar != 'q')
{
Thread.Sleep(10);
}
}
}
}
客户端
using System;
using System.IO;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using Interface;
namespace Client
{
class Program
{
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure(new FileInfo("Log4net.xml"));
TcpClientChannel chan = new TcpClientChannel();
ChannelServices.RegisterChannel(chan, false);
IDataCenter idc = (IDataCenter)Activator.GetObject(typeof(IDataCenter), "tcp://localhost:9999/server", null);
string value = idc.Query();
logger.Info(value);
var entity = idc.QueryData();
Console.WriteLine(entity.ReportId + "\t" + entity.ReportName);
Console.Read();
}
}
}
最新文章
- LTP随笔——本地调用ltp之ltp4j
- 商业智能SAAS走向中小企业
- windows远程控制ubuntu---基于ssh
- Android--数据解析
- java mybatis 中sql 模糊查询
- POJ2437 Muddy roads
- C# virtual和abstract的
- NSDictionary、NSMutableDictionary的基本用法
- solr安全-tomcat
- python numpy 使用笔记 矩阵操作
- tomcat配置数据池
- centos6.8 安装gitlab记录
- [转] Vue + Webpack 组件式开发(练习环境)
- 剑指offer——python【第16题】合并两个有序链表
- 转:Bash Shell常用快捷键
- android -------- ConstraintLayout介绍 (一)
- [POJ题目分类][转]
- (转)silverlight应用程序中未处理的错误代码:2104 类别:InitializeError
- Git为某个域名设置代理
- 如何POST一个JSON格式的数据给Restful服务
热门文章
- Machine Learning for hackers读书笔记(十二)模型比较
- poj 1159 (DP LCS)
- ubuntu13.04云主机部署gitlab6.6
- 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格
- theos的makefile写法
- Linux/Android 性能优化工具 perf
- ORACLE RAC集群硬件资源管理与单节点的区别
- <;十二>;面向对象分析之UML核心元素之节点和设备
- 有趣的js题目
- Java 中无参无返回值方法的使用