337 Star 2.6K Fork 788

GVP若汝棋茗/TouchSocket

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
dmtpremoteaccess.mdx 2.34 KB
一键复制 编辑 原始数据 按行查看 历史
---
id: dmtpremoteaccess
title: 远程文件系统
---
import Tag from "@site/src/components/Tag.js";
## 一、说明 <Tag>Pro</Tag>
使用该插件,可以访问远程终端的文件系统。包括:创建、删除、复制、移动、获取信息等。
## 二、使用
该功能由`RemoteAccessFeature`功能插件提供。所以需要`客户端`和`服务器`都需要`UseRemoteAccess`。
```csharp showLineNumbers
.ConfigurePlugins(a =>
{
a.UseRemoteAccess();
});
```
以获取文件夹信息为例:
【请求端】
任意Dmtp终端均可以调用GetRemoteAccessActor创建一个访问器。
同时可以传递一个元数据组。用于载入自定义消息。
```csharp showLineNumbers
var result = await this.m_client.GetRemoteAccessActor().GetDirectoryInfoAsync("c:/新建文件夹", millisecondsTimeout: 30 * 1000);
//然后通过DirectoryInfo属性,可以获取到请求文件夹的信息,包括创建时间、修改时间、子文件夹、子文件等。
```
:::tip 提示
此处可以访问远程终端的文件系统。包括:创建、删除、复制、移动、获取信息等
:::
【响应端】
响应端定义一个插件,实现`IDmtpRemoteAccessingPlugin`,然后实现接口。
```csharp showLineNumbers
public class MyRemoteAccessPlugin : PluginBase, IDmtpRemoteAccessingPlugin
{
public async Task OnRemoteAccessing(IDmtpActorObject client, RemoteAccessingEventArgs e)
{
//Console.WriteLine($"有客户端正在请求远程操作");
//Console.WriteLine($"类型:{e.AccessType},模式:{e.AccessMode}");
//Console.WriteLine($"请求路径:{e.Path}");
//Console.WriteLine($"目标路径:{e.TargetPath}");
//Console.WriteLine("请输入y/n决定是否允许其操作?");
//var input = Console.ReadLine();
//if (input == "y")
//{
// e.IsPermitOperation = true;
// return;
//}
//如果当前插件无法处理,转至下一个插件
await e.InvokeNext();
}
}
```
:::caution 警告
远程文件系统访问,是属于比较隐私的功能,所以在开发这功能时,应该取得被访问端的访问许可,所以在每次访问时,都必须对`e.IsPermitOperation = true`做确认动作。
:::
[本文示例Demo](https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/Dmtp/RemoteAccessApp)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/RRQM_Home/TouchSocket.git
git@gitee.com:RRQM_Home/TouchSocket.git
RRQM_Home
TouchSocket
TouchSocket
master

搜索帮助