您的位置:首页 > 编程语言 > C#

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息