接口定义

实体定义,注意需要序列化


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();
}
}
}

最新文章

  1. LTP随笔——本地调用ltp之ltp4j
  2. 商业智能SAAS走向中小企业
  3. windows远程控制ubuntu---基于ssh
  4. Android--数据解析
  5. java mybatis 中sql 模糊查询
  6. POJ2437 Muddy roads
  7. C# virtual和abstract的
  8. NSDictionary、NSMutableDictionary的基本用法
  9. solr安全-tomcat
  10. python numpy 使用笔记 矩阵操作
  11. tomcat配置数据池
  12. centos6.8 安装gitlab记录
  13. [转] Vue + Webpack 组件式开发(练习环境)
  14. 剑指offer——python【第16题】合并两个有序链表
  15. 转:Bash Shell常用快捷键
  16. android -------- ConstraintLayout介绍 (一)
  17. [POJ题目分类][转]
  18. (转)silverlight应用程序中未处理的错误代码:2104 类别:InitializeError
  19. Git为某个域名设置代理
  20. 如何POST一个JSON格式的数据给Restful服务

热门文章

  1. Machine Learning for hackers读书笔记(十二)模型比较
  2. poj 1159 (DP LCS)
  3. ubuntu13.04云主机部署gitlab6.6
  4. 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格
  5. theos的makefile写法
  6. Linux/Android 性能优化工具 perf
  7. ORACLE RAC集群硬件资源管理与单节点的区别
  8. <十二>面向对象分析之UML核心元素之节点和设备
  9. 有趣的js题目
  10. Java 中无参无返回值方法的使用