当前位置:编程学习 > C#/ASP.NET >>

做一Remoting的例子发布不成功大家看看

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace Wrox.ProCSharp.Remoting
{

    public class HelloClient
    {
        [STAThread]
        public static void Main(string[] args)
        {

            ChannelServices.RegisterChannel(new TcpClientChannel(),true);
            Hello obj = (Hello)Activator.GetObject(typeof(Hello), "tcp://192.168.2.110:8086/Hi");
            if (obj == null)
            {
                Console.WriteLine("could not locate server");
                return;

            }
            for (int i = 0; i < 5; i++)
            {

                Console.WriteLine(obj.Greeting("Christian"));

            }

        }

    }




}




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 Wrox.ProCSharp.Remoting;

namespace Wrox.ProCharp.Remoting
{
    public class HelloServer
    {
        [STAThread]

        //创建一个C#控制台应用程序HelloServer 。 为了使用TcpServerChannel类,必须引用

        //System.Runtime.Remoting程序集,另外更重要的是,引用上面创建的RemoteHello程序集。

        // 在Main()方法中,用端口号8086创建一个 System.Runtime.Channels.Tcp信道,该信道

        //使用System.Runtiem.Remoting.Channels.ChannelServices注册,使之用于远程对象。

        //在远程对象注册之后,使服务器一直处于运行状态,直到按任意键为止:

        public static void Main(string[] args)
        {

            TcpServerChannel channel = new TcpServerChannel(8086);
            ChannelServices.RegisterChannel(channel,true);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(Hello), "Hi", WellKnownObjectMode.SingleCall);
            System.Console.WriteLine("hit to exit");
            System.Console.ReadLine();
        }



    }
}



using System;
using System.Collections.Generic;
using System.Text;

namespace Wrox.ProCSharp.Remoting
{
    public class Hello : System.MarshalByRefObject
    {
        //为了说明.NET Remoting 是如何运行的,先创建一个简单的类库,以创建远程的对象。

        //依次点击“文件”->“新创建”->“工程”,选择创建一个C# Library,并将其命名为RemoteHello,然后点击OK按钮。
        // 这将创建一个.NET Remote客户端和服务器端用来通讯的“共享命令集”。 



        //程序集的名称是RemoteHello.dll,类的名称是Hello, 类Hello是从

        //System.MarshallByRefObject 派生出来的。





        public Hello()
        {
            Console.WriteLine("Constructor called");

        }


        ~Hello()
        {
            Console.WriteLine("Destructor called");
        }




        public string Greeting(string name)
        {
            Console.WriteLine("Greeting called");
            return "Hello," + name;

        }



    }
}






--------------------编程问答-------------------- 好像没什么问题,进来学习一下 --------------------编程问答-------------------- 难道这是红皮书上的例子?看你的命名空间wrox,呵呵 --------------------编程问答-------------------- 看不出来哪里错了~~~
不知道是有异常还是什么的? --------------------编程问答-------------------- 呵呵,这个是书上的例子,我以前也是过,可以的。 --------------------编程问答-------------------- 没得问题。要先运行服务器再运行客户端
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,