通过Remoting service上传文件

_灼晨

_灼晨

2016-02-19 19:01

今天图老师小编给大家精心推荐个通过Remoting service上传文件教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

  最近在因为在学习Remoting,纯粹只是了解一下,发现Remoting确实是好东西。

  我们通常有三种方式来使用remoting,一种是

  第一种:Publishing a public object
  公开的对象创建在本地
  第二种:Remote creation of a public object (SAO)
  对象创建在客户端请求中
  第三种:Remote creation of a private object (CAO)
  对象创建在HOST上,客户端引用服务器上的对象

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

  目次我也没有很好理解这三种的本质区别在哪里。而这三种方式的remoting创建方式也不相同。

  第一种方式
  Host:
  ChannelServices.RegisterChannel (new TcpChannel(1500));
  cTransfer Trans = new cTransfer();
  RemotingServices.Marshal (Trans, "TestService");Client:
  cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                   "tcp://host:1500/TestService");
  第二种方式
  Host:
  ChannelServices.RegisterChannel (new TcpChannel(1500));
  RemotingConfiguration.RegisterWellKnownServiceType(typeof(cTransfer),
      "TestService", WellKnownObjectMode.Singleton);Client:
  cTransfer T = (cTransfer) Activator.GetObject(typeof(cTransfer),
                                   "tcp://host:1500/TestService");
  第三种方式
  Host:
  ChannelServices.RegisterChannel (new TcpChannel(1500));
  RemotingConfiguration.RegisterActivatedServiceType(typeof(cTransfer));Client:
  object[] attr = {new UrlAttribute("tcp://host:1500")};
  object[] args = {"Sample constructor argument"};
  cTransfer T = (cTransfer) Activator.CreateInstance(typeof(cTransfer), args, attr);
  如果我们需要一个对象(object)允许远程调用处理,那么这个对象(object)需要继承于MarshalByRefObject这个类。

  如何在remoting中传送文件呢?基本思路就是在client打开client的文件,转换在Byte[]类型之后调用host的对象。
  Client与Host之间传送的对象
  [Serializable]
      public struct kAction
      {
          public string filename;
          public byte[] context;       
         
      };打开文件,将流字节保存到Context中去
  Stream  fileStream=File.Open(this.transFileName.Text,FileMode.Open);
              fileStream.Position=0;
              byte[] Content = new byte[((int) fileStream.Length) + 1];
              fileStream.Read(Content,0,Content.Length) ;
  在Host在读取到Kaction之后,把它保存到指定文件夹下面
  MemoryStream meoeryStream=new MemoryStream(k_Action.context);
              FileStream fileStream=new FileStream(@"d:"+k_Action.filename,FileMode.Create);
              meoeryStream.WriteTo(fileStream);
              fileStream.Close();
              meoeryStream.Close();           
  发现不能在对象中又定义新的对象。在准备发送到HOST上会提示“包含潜在危险的类型”。
  [Serializable]
      public struct kAction
      {
          public string filename;
          public byte[] context;
                  public FineInfo fileInfo;//这里

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

      };
  记录一下自己的心得。有空我会好好整理下下回做篇完整点的。

  cnzc's blogs

展开更多 50%)
分享

猜你喜欢

通过Remoting service上传文件

Web开发
通过Remoting service上传文件

够快网盘如何通过手机上传文件?

电脑网络
够快网盘如何通过手机上传文件?

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

文件上传类

Web开发
文件上传类

flashfxp怎么上传文件 flashfxp上传文件图文教程

软件教程
flashfxp怎么上传文件 flashfxp上传文件图文教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

彩云如何上传和批量上传文件?

电脑网络
彩云如何上传和批量上传文件?

flashfxp怎么上传文件

服务器
flashfxp怎么上传文件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Excel时打开两个像Word一样左右一边一个

Excel时打开两个像Word一样左右一边一个

入门基础:Java用synth自定义皮肤

入门基础:Java用synth自定义皮肤
下拉加载更多内容 ↓