C#.net,remoting的简单应用实例
2010-05-25 15:28
639 查看
依次点击“文件”->“新创建”->“工程”,选择创建一个c# library,并将其命名为remotingLibrary,然后点击ok按钮。
remotingLibrary:底层的简单类库
hello.cs
using System;
namespace remotingLibrary
{
public class hello : System.MarshalByRefObject
{
public hello()
{
Console.WriteLine("constructor called");
}
~hello()
{
Console.WriteLine("destructor called");
}
public string greeting(string name)
{
Console.WriteLine("greeting called");
return "hello," + name;
}
}
}
**********************************************************************************************
建一个c#控制台应用程序helloserver 。 为了使用TcpServerChannel 类,在项目的引用中添加
System.Runtime.Remoting.dll程序集,另外更重要的是,引用上面创建的remotingLibrary.dll程序集。
在main()方法中,用端口号8086创建一个 System.Runtime.Remoting.Channels.Tcp信道,该信道
使用System.Runtime.Remoting.Channels.ChannelServices注册,使之用于远程对象。
helloserver:通信数据的服务端
helloserver.cs
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using remotingLibrary;
namespace helloserver
{
public class helloserver
{
[STAThread]
static void Main(string[] args)
{
TcpServerChannel channel = new TcpServerChannel(8086);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(hello), "hi", WellKnownObjectMode.SingleCall);
Console.WriteLine("hit to exit");
Console.ReadLine();
}
}
}
*******************************************************************************************
客户端也是一个c#控制台应用程序 client。 在项目的引用中添加
System.Runtime.Remoting.dll程序集,另外更重要的是,引用上面创建的remotingLibrary.dll程序集。
在客户端程序中,要创建一个tcpclientchannel对象,这个对象注册在channelservices 中。
对于tcpchannel,使用默认的构造函数,因此可以选择任意一个端口。接下来使用activator类把代理对象返回给远程对象。
client:通信数据的客户端
client.cs
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using remotingLibrary;
namespace client
{
public class client
{
[STAThread]
static void Main(string[] args)
{
TcpClientChannel channel=new TcpClientChannel();
ChannelServices.RegisterChannel(channel);
hello obj = (hello)Activator.GetObject(typeof(hello), "tcp://localhost:8086/hi");
if (obj == null)
{
Console.WriteLine("could not locate server");
return;
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(obj.greeting("test"));
}
Console.ReadLine();
}
}
}
remotingLibrary:底层的简单类库
hello.cs
using System;
namespace remotingLibrary
{
public class hello : System.MarshalByRefObject
{
public hello()
{
Console.WriteLine("constructor called");
}
~hello()
{
Console.WriteLine("destructor called");
}
public string greeting(string name)
{
Console.WriteLine("greeting called");
return "hello," + name;
}
}
}
**********************************************************************************************
建一个c#控制台应用程序helloserver 。 为了使用TcpServerChannel 类,在项目的引用中添加
System.Runtime.Remoting.dll程序集,另外更重要的是,引用上面创建的remotingLibrary.dll程序集。
在main()方法中,用端口号8086创建一个 System.Runtime.Remoting.Channels.Tcp信道,该信道
使用System.Runtime.Remoting.Channels.ChannelServices注册,使之用于远程对象。
helloserver:通信数据的服务端
helloserver.cs
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using remotingLibrary;
namespace helloserver
{
public class helloserver
{
[STAThread]
static void Main(string[] args)
{
TcpServerChannel channel = new TcpServerChannel(8086);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(hello), "hi", WellKnownObjectMode.SingleCall);
Console.WriteLine("hit to exit");
Console.ReadLine();
}
}
}
*******************************************************************************************
客户端也是一个c#控制台应用程序 client。 在项目的引用中添加
System.Runtime.Remoting.dll程序集,另外更重要的是,引用上面创建的remotingLibrary.dll程序集。
在客户端程序中,要创建一个tcpclientchannel对象,这个对象注册在channelservices 中。
对于tcpchannel,使用默认的构造函数,因此可以选择任意一个端口。接下来使用activator类把代理对象返回给远程对象。
client:通信数据的客户端
client.cs
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using remotingLibrary;
namespace client
{
public class client
{
[STAThread]
static void Main(string[] args)
{
TcpClientChannel channel=new TcpClientChannel();
ChannelServices.RegisterChannel(channel);
hello obj = (hello)Activator.GetObject(typeof(hello), "tcp://localhost:8086/hi");
if (obj == null)
{
Console.WriteLine("could not locate server");
return;
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(obj.greeting("test"));
}
Console.ReadLine();
}
}
}
相关文章推荐
- 【原创】 ASP.NET C#反射简单实例应用
- C# .NET Remoting 简单应用示例
- asp.net,C#,html控件的File控件文件上传简单实例,vs2010
- 在C#代码中应用Log4Net(一)简单使用Log4Net
- 在C#代码中应用Log4Net(一)简单使用Log4Net
- .net Remoting简单实例
- 章鱼哥出品_VB.NET 线程委托应用实例 一个简单的例子让你轻松掌握委托的用法
- ASP.NET,net2.0,c#简单的三层架构实例【转】
- C#.NET解析XML(简单实例)
- asp.net中ajax的简单应用实例代码
- 在C#代码中应用Log4Net(一)简单使用Log4Net
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- Vlc.DotNet C#音视频播放器使用说明及简单实例
- C#.NET解析XML(简单实例)
- C# .Net 中序列化和反序列化的简单应用
- asp.net,C#,html控件的File控件实现多文件上传简单实例,vs2010
- 关于百度编辑器UEditor(1.4.3)在C#.NET中的应用实例
- 在C#代码中应用Log4Net(一)简单使用Log4Net
- c#中的委托和事件的简单实例_c#应用
- asp.net反射简单应用实例