定義遠程對象(繼承自MarshalByRefObject)2>創建一個Server端作為宿主(注冊通道、注冊遠程對象)3>創建客戶端(注冊通道、通過URL獲取Server端的遠程對象的代理、通過代理操作遠程對象)服務器IP:10.10.1.35端口號:8090如果使用的端口號已經被占用會提示:具體操作代碼:1.創建一個操作具體的項目RemotingModelnamespaceRemotingModel{//記得把類的訪問修飾符改為pu" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Remoting分布式開發在局域網中的應用

系統 1864 0

先弄清一下流程吧:

?? 1>定義遠程對象(繼承自MarshalByRefObject)
?? 2>創建一個Server端作為宿主(注冊通道、注冊遠程對象)
?? 3>創建客戶端(注冊通道、通過URL獲取Server端的遠程對象的代理、通過代理操作遠程對象)

服務器IP:10.10.1.35?? 端口號:8090

如果使用的端口號已經被占用會提示:

具體操作代碼:

?1.創建一個操作具體的項目RemotingModel

?

      namespace RemotingModel

{

    //記得把類的訪問修飾符改為public

    public class Talker : MarshalByRefObject//繼承自該MarshalByRefObject

    {

        public void Talk(string word)

        {

            Console.WriteLine(word);

        }

    }

}


    

?

?2.添加一個服務器端項目RemotingServer:這個項目在服務器端10.10.1.35機器上

?? 1>添加引用System.Runtime.Remoting和RemotingModel項目

?? 2>添加如下代碼:

      using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;



using RemotingModel;


    

?

      static void Main(string[] args)

        {

            //注冊通道(添加引用RemotingModel和System.Runtime.Remoting)

            TcpServerChannel channel = new TcpServerChannel("TalkChannel", 8090);

            ChannelServices.RegisterChannel(channel, false);



            //注冊遠程對象

            RemotingConfiguration.RegisterWellKnownServiceType(typeof(Talker),

                "Ser_Talker",

                WellKnownObjectMode.SingleCall

                );



            Console.ReadLine();

        }


    

?

?3.添加一個客戶端項目RemotingClient:這個項目在客戶端機器上

??? 同樣添加那兩引用

??

      using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;



using RemotingModel;



namespace RemotingClient

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }



        private Talker _talker = null;

        private void button1_Click(object sender, EventArgs e)

        {

            //操作遠程對象

            _talker.Talk(txt_word.Text.Trim());



            //Do other things

            txt_content.Text = "發送成功:" + txt_word.Text.Trim();

        }



        private void Form1_Load(object sender, EventArgs e)

        {

            //注冊通道

            TcpClientChannel channel = new TcpClientChannel();

            ChannelServices.RegisterChannel(channel, false);



            //獲取遠程對象

            _talker = (Talker)Activator.GetObject(typeof(Talker), "TCP://10.10.1.35:80/Ser_Talker");//TCP://10.10.1.35:8090/Ser_Talker

        }

    }

}


    

?注意:如果客戶端和服務器端ChannelServices.RegisterChannel(channel, true);這里是true的時候會報錯:

如果端口號寫的不一致就會出現如下錯誤:

當然如果客戶端和服務器端都在本機上運行的時候這里的true也可以的。

生成之后你直接在服務器端和客戶端下打開bin>Debug>文件夾下的.exe就可以實現效果了。

這樣的話就ok了你在本機上發的消息馬上就能在服務器10.10.1.35上看到消息了。

Remoting分布式開發在局域網中的應用


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 隆安县| 雷波县| 五常市| 即墨市| 徐汇区| 东乡| 水城县| 宜君县| 安仁县| 革吉县| 清远市| 峨边| 广安市| 泸西县| 定襄县| 安达市| 潍坊市| 鹿泉市| 宜川县| 囊谦县| 西乌珠穆沁旗| 庆云县| 峨边| 桦甸市| 故城县| 阜宁县| 庆元县| 宁波市| 疏勒县| 沂源县| 曲沃县| 南部县| 鄂尔多斯市| 彰化县| 稻城县| 抚顺市| 衡南县| 新竹县| 新河县| 漳平市| 白银市|