Remoting Demo

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Runtime.Remoting;
12using System.Runtime.Remoting.Channels;
13using System.Runtime.Remoting.Channels.Tcp;
14using System.Threading;
15
16public partial class remoting : System.Web.UI.Page
17{
18    protected void Page_Load(object sender, EventArgs e)
19  {
20       Server1();
21        Client();
22    }

23    public class test : MarshalByRefObject
24    {
25        public string doing()
26        {
27            string date = DateTime.Now.ToString();
28            Thread.Sleep(5000);
29            return string.Format("{0} in {1}"this.GetType().Name,date+ AppDomain.CurrentDomain.FriendlyName+DateTime.Now.ToString());
30        }

31    }

32    public void Server1()
33    
34        AppDomain server = AppDomain.CreateDomain("server");
35        IChannel[] channels = ChannelServices.RegisteredChannels;
36
37        //关闭指定名为MyTcp的通道;
38        foreach (IChannel eachChannel in channels)
39        {
40            if (eachChannel.ChannelName == "tcp")
41            {
42                TcpServerChannel tcpChannel = (TcpServerChannel)eachChannel;
43
44                //关闭监听;
45                tcpChannel.StopListening(null);
46
47                //注销通道;
48                ChannelServices.UnregisterChannel(tcpChannel);
49            }

50        }

51
52            TcpServerChannel tcpsc = new TcpServerChannel(1234);
53            ChannelServices.RegisterChannel(tcpsc, false);
54
55            RemotingConfiguration.RegisterWellKnownServiceType(typeof(test), "test", WellKnownObjectMode.Singleton);
56    
57    }

58
59    public void Client()
60    {
61        IChannel[] channels = ChannelServices.RegisteredChannels;
62        foreach (IChannel eachChannel in channels)
63        {
64            if (eachChannel.ChannelName == "TcpChannel")
65            {
66                TcpChannel tcpChannel = (TcpChannel)eachChannel;
67
68                //关闭监听;
69                tcpChannel.StopListening(null);
70
71                //注销通道;
72                ChannelServices.UnregisterChannel(tcpChannel);
73            }

74        }

75        BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
76        provider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
77
78        Hashtable props = new Hashtable();
79
80        props["port"= 7654;
81       props["name"= "TcpChannel";
82
83
84       TcpChannel Cchannel = new TcpChannel(props, null, provider); 
85
86     //   TcpClientChannel Cchannel= new TcpClientChannel();
87       // Cchannel.ChannelName="Cchannel";
88        ChannelServices.RegisterChannel(Cchannel, false);
89        test remo = (test)Activator.GetObject(typeof(test), "tcp://localhost:1234/test");
90        Response.Write(DateTime.Now);
91        Response.Write( remo.doing());
92        Response.Write(DateTime.Now);
93    }

94
95}

96
posted on 2008-10-22 11:43  踏燕归来  阅读(343)  评论(0编辑  收藏  举报