通過Remotingservice上傳檔案

2021-04-17 00:31:01 字數 2227 閱讀 5327

最近在因為在學習remoting,純粹只是了解一下,發現remoting確實是好東西。

我們通常有三種方式來使用remoting,一種是

第一種:publishing a public object

公開的物件建立在本地

第二種:remote creation of a public object (sao)

物件建立在客戶端請求中

第三種:remote creation of a private object (cao)

物件建立在host上,客戶端引用伺服器上的物件

目次我也沒有很好理解這三種的本質區別在**。而這三種方式的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 = ;

object args = ;

ctransfer t = (ctransfer) activator.createinstance(typeof(ctransfer), args, attr);

如果我們需要乙個物件(object)允許遠端呼叫處理,那麼這個物件(object)需要繼承於marshalbyrefobject這個類。

如何在remoting中傳送檔案呢?基本思路就是在client開啟client的檔案,轉換在byte型別之後呼叫host的物件。

client與host之間傳送的物件

[serializable]

public struct kaction

;開啟檔案,將流位元組儲存到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

;記錄一下自己的心得。有空我會好好整理下下回做篇完整點的。

cnzc's blogs

通過ActiveProcessLinks遍歷程序

程序的遍歷有多種方法。在應用程式裡可以使用createtoolhelp32snapshot函式先做個程序快照 snapshot 然後通過返回的資料進行遍歷。在核心程式設計裡可以通過核心資料結構來實現。核心結構eprocess 執行體程序塊 executive process 是乙個不透明 opaqu...

通過RestHighLevelClient操作ES

一 查詢相關 在es查詢中,must相當於sql語句中的and,should相當於or。當想要實現類似於 select from table where a and b or c or d 的功能時可以借助於es中的bool。即resthighlevelclient中的boolquerybuilde...

IEEE PDF eXpress 通過方法

ieee pdf express這個東西比較煩人 文章是用latex寫的,生成pdf後始終是不能通過 原因是有些文字無法嵌入到pdf中的,本人之前的解決方法是把所有檔案打包生成zip後上傳,讓ieee來生成pdf 但這次一直不行,不過最後找到了乙個非常簡單的方法 安裝pdfcreater,之後列印生...