首页 > 编程 > .NET > 正文

使用 Visual C# .NET 按值将对象封送到远程服务器

2024-07-10 13:07:22
字体:
来源:转载
供稿:网友

建立c#类库项目dll

实现代码:

using system;

namespace dll
{
 /// <summary>
 /// test 的摘要说明。
 /// </summary>
 [system.serializable]
 public class test
 {
  public test()
  {
   //
   // todo: 在此处添加构造函数逻辑
   //
  }

  public string time
  {
   get
   {
    return datetime.now.tostring();
   }
  }
 }
}

using system;
using system.io;

namespace dll
{
 /// <summary>
 /// api 的摘要说明。
 /// </summary>
 public class api : system.marshalbyrefobject
 {
  public api()
  {
   //
   // todo: 在此处添加构造函数逻辑
   //
  }

  public string gettime()
  {
   return new test().time;
  }

  public string[] getdirectories(string path)
  {
   return directory.getdirectories(path);
  }

  public string[] getfiles(string path)
  {
   return directory.getfiles(path);
  }
 }
}
添加c#windows应用程序项目server

实现代码:

using system;
using system.drawing;
using system.collections;
using system.componentmodel;
using system.windows.forms;
using system.data;


using system.runtime.remoting;
using system.runtime.remoting.channels;
using system.runtime.remoting.channels.tcp;

using dll;

namespace server
{
 /// <summary>
 /// form1 的摘要说明。
 /// </summary>
 public class form1 : system.windows.forms.form
 {
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private system.componentmodel.container components = null;

  public form1()
  {
   //
   // windows 窗体设计器支持所必需的
   //
   initializecomponent();

   //
   // todo: 在 initializecomponent 调用后添加任何构造函数代码
   //
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.dispose();
    }
   }
   base.dispose( disposing );
  }

  #region windows 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void initializecomponent()
  {
   //
   // form1
   //
   this.autoscalebasesize = new system.drawing.size(6, 14);
   this.clientsize = new system.drawing.size(208, 150);
   this.name = "form1";
   this.text = "form1";
   this.load += new system.eventhandler(this.form1_load);

  }
  #endregion

  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [stathread]
  static void main()
  {
   application.run(new form1());
  }

  private void form1_load(object sender, system.eventargs e)
  {
   tcpchannel chan = new tcpchannel(7777);
   channelservices.registerchannel(chan);
   remotingconfiguration.registerwellknownservicetype(
    type.gettype("dll.api, dll"),
    "test",
    wellknownobjectmode.singlecall);

  }
 }
}
添加c#windows应用程序项目client

global.cs代码:

using system;
using system.runtime.remoting;
using system.runtime.remoting.channels;
using system.runtime.remoting.channels.tcp;

using dll;
namespace client
{
 /// <summary>
 /// global 的摘要说明。
 /// </summary>
 public class global
 {
  public global()
  {
   //
   // todo: 在此处添加构造函数逻辑
   //
  }
  public static dll.api api
  {
   get
   {
    return (dll.api)activator.getobject(typeof(dll.api), "tcp://"+ config.host + ":" + config.port + "/test");
   }
  }
 }
}

主窗体关键代码:

  [stathread]
  static void main()
  {
   application.run(new form1());
   channelservices.registerchannel(new tcpchannel());

  }

  private void form1_load(object sender, system.eventargs e)
  {
   string[] files = global.api.getfiles(@"c:/");//取得服务器c盘文件
  }
参考文献:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;307546

商业源码热门下载www.html.org.cn

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表