你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 网络与通信
4.14 .NET Remoting分布式对象技术实现远程信息获取(下)
 

四、程序代码

创建类库项目SysInfoServer,其中设计了可远程类型SysInfo类,它继承了MarshalByRefObject类型,其方法主要完成对远程主机的信息读取。其信息包括了机器名称、版本号、用户名、用户所在域、系统目录等。实现的代码如下:

using System;

using System.Collections;

namespace SysInfoServer

{

    /// <summary>

    /// 摘要说明。

    /// </summary>

    public class SysInfo:MarshalByRefObject

    {

        public string GetCurrentTime()

        {

            return DateTime.Now.ToLongTimeString();

        }

        public string GetWorkingSet()

        {

            return Environment.WorkingSet.ToString();

        }

        public string GetVersion()

        {

            return Environment.Version.ToString();

        }

        public string GetUserName()

        {

            return Environment.UserName;

        }

        public string GetUserDomainName()

        {

            return Environment.UserDomainName;

        }

        public string GetSystemDirectory()

        {

            return Environment.CurrentDirectory;

        }

        public string GetMachineName()

        {

            return Environment.MachineName;

        }

        public string GetCurrentDirectory()

        {

            return Environment.CurrentDirectory;

        }

        public string GetOSVersion()

        {

            return Environment.OSVersion.ToString();

        }

    }

}

编译类库项目,生成SysInfoServer.dll库文件。

创建基于控制台的服务器端项目RemotingServer。在引用里添加System.Runtime.Remoting和刚编译好的SysInfoServer.dll库文件。编写相应代码如下:

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;

using SysInfoServer;

 

class MyApp

{

    static void Main()

    {

    //创建TCP信道

        TcpServerChannel channel=new TcpServerChannel(10001);

    //注册信道

        ChannelServices.RegisterChannel(channel,false);

    //注册远程对象类型

        RemotingConfiguration.RegisterWellKnownServiceType(typeof(SysInfo), "SysInfo", WellKnownObjectMode.SingleCall);

        Console.WriteLine("远程服务器正在运行中,按Enter键退出");

        Console.ReadLine ();

     }

}

编译项目,生成RemotingServer.exe可执行文件。

创建基于控制台或Windows窗体的客户端端项目RemotingClient。在引用里添加System.Runtime.Remoting和刚编译好的SysInfoServer.dll库文件。编写相应代码如下:

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Tcp;

using SysInfoServer;

namespace TimeClient

{

    class MyApp

    {

   

        static void Main(string[] args)

        {

        //创建TCP信道

            TcpClientChannel channel=new TcpClientChannel();

        //注册信道

            ChannelServices.RegisterChannel(channel, false);

            try

            {

        //获取远程对象

                RemotingConfiguration.RegisterWellKnownClientType(typeof(SysInfo), "tcp://localhost:10001/SysInfo");

                SysInfo info = new SysInfo();

                Console.WriteLine("远程系统信息列表");

                Console.WriteLine("机器名称:" + info.GetMachineName());

                Console.WriteLine("版本号:" + info.GetVersion());

                Console.WriteLine("用户名:" + info.GetUserName());

                Console.WriteLine("用户所在域:" + info.GetUserDomainName());

                Console.WriteLine("系统目录:" + info.GetSystemDirectory());

                Console.WriteLine("当前目录:" + info.GetCurrentDirectory());

                Console.WriteLine("系统版本:" + info.GetOSVersion());

                Console.WriteLine("当前时间:" + info.GetCurrentTime());

                Console.ReadLine();

            }

            catch

            {

                Console.WriteLine("发生错误了!");

            }

        }

    }

}

编译项目,生成RemotingClient.exe执行文件。

五、结语

本文通过远程主机信息获取程序并介绍了.NET Remoting程序设计的基本思路与框架。当前很多企业级服务都是基于 .NET 远程处理基础结构构建的,它不仅可以提供 COM+ 分布式对象模型所具备的所有丰富性和灵活性,而且包括支持大范围分布式事务。笔者希望在此能抛砖引玉,使读者通过了解本程序框架的基础上并做一些必要修改(比如可远程类型设计的修改)开发出更加功能强大的应用。

 

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089