首页 > 其他分享 >内网穿透,远程网盘,网站外挂资源,可嵌入到页面的网盘资源解决方案

内网穿透,远程网盘,网站外挂资源,可嵌入到页面的网盘资源解决方案

时间:2024-03-15 23:44:42浏览次数:15  
标签:code 服务器端 网盘 远程网 获取 var 资源 客户端

这是一个我个人写的库,主要实现的是基于tcpclient的网站外扩网盘的解决方案,可以使用家用网络外挂个人电脑中的资源到自己的网站上,已经上传nuget,大家可以直接在nuget包管理中搜索到,直接搜索ZmjNetDisk即可,下面介绍具体的使用方式:

另外一提这个库做的比较的个人化,因为他就是为了我的网站而服务的,我的网站是store.zhaimaojun.cn,大家可以去体验一下实际的效果,也可以搜索微信小程序 什邡市宅猫君网络工作室,我做了网页版和小程序版,都是基于这个库。未来有空我可以再升级一下,改成更加泛化的,再改成多中心式的,如果有谁有资金想去搞一搞的话,弄成多中心式,就像p2p一样文件可以传输的带宽和速率就更快更好了,当然也可能不能和传统的p2p去抗衡吧,唯一的优点就是颠覆传统的网盘模式,可以把资源嵌入到页面中浏览,而不是必须在指定的页面或者客户端才能浏览。

第一步 获取和安装库

第二步 服务器端和客户端开启服务

1 /**服务器开启服务,这个需要运行在网站端*/
2 var nd = new ZmjNetDisk.NetDiskServer(new ZmjNetDisk.NetDiskServerConfig { Ip = "0.0.0.0", Port = 11111, });//端口可以随意根据自己需求
3 nd.StartListen();//必须要调用startlisten来开启侦听,也可以调用stoplisten来停止侦听,可以多次调用
1 /**客户端开启服务*/
2 var diskClient = new NetDiskClient(SearchPicture, SearchVideo, SearchSource, GetSourceInfo, ScaleImage, new NetDiskClientConfig { ServerIp = "你的服务器ip", Port = 11111, ConnectTimeout = 12000, });//新建客户端服务对象
3 diskClient.NoticeMsg += DiskClient_NoticeMsg;//这里自定义对通知的处理
4 diskClient.Start();//调用start来开启服务
5 diskClient.Client.Client.Send(new byte[1] { 0 });//这里必须间歇性的发送一个0,两个作用,一是快速发现掉线情况,二是防止tcp链接假死。可以定时发送,比如15-30秒发送一次即可,这种发送不影响整体通讯
6 /**这里需要额外注意的是,调用start会额外开启线程去处理服务器发来的命令,但是diskClient应该要定时的去检测链接的有效性,失效了应该积极主动的去重新链接,也就是dispose之后重新new,再start*/

客户端在新建的时候需要提供五个方法,这5个方法含义如下:

SearchPicture:这是随机获取图片的,传入宽高和查看级别来获取对应的一张随机图片,返回图片的code,用于获取图片

SearchVideo:这是随机获取视频的,传入视频文件大小来获取指定大小以下的短视频资源,返回视频的code,用于获取视频

SearchSource:这是搜索指定类型和级别的资源的,返回格式化的资源对象,用于传输给服务器端,

GetSourceInfo:这是获取指定的资源详细内容的,返回格式化的资源对象,

ScaleImage:这是用于缩放图片的,传入图片和需要缩放到的大小,返回图片缩放到指定大小后的文件流

第三步 服务器端搜索资源和获取资源

 1 /**服务器端获取文件*/
 2 using var file = await Task.Run(() => Server.WaitForGetFile("要获取的文件的code", 获取的文件的开始位置, 获取文件的结束位置,可以是-1, 用于取消的token)) ?? throw new BadHttpRequestException("找不到指定的文件", (int)HttpStatusCode.NotFound);
 3 /**服务器端获取缩放后的图片,缩放传入0,0表示不缩放*/
 4 using var file = await Task.Run(() => Server.WaitForGetImage("图片的code", 开始, 结束, 缩放宽度, 缩放高度, 取消token)) ?? throw new BadHttpRequestException("找不到指定的文件", (int)HttpStatusCode.NotFound);
 5 /**随机获取图片的code,宽高用于标识需要获取的图片的宽高比和像素水平,例如水平的2k或4k图,或者垂直的4k或8k图等*/
 6 var rcode = Server.RandomPicture(w, h, level)?.SourceCode;
 7 /**随机获取视频的code,时间用于限制获取的视频的文件大小*/
 8 var code = Server.RandomVideo(30000000, level)?.SourceCode;
 9 /**服务器端搜索指定关键词的资源,搜索出来的是很多资源*/
10 var sources = Server.SearchSource(NetDiskSourceType.game, level, "要搜索的关键词", 0, 8, NetDiskSourceOrderType.none, out _);//其中资源类型有多种,可根据资源类型区分不同的资源来搜索,0和8用于形成页,比如每页是8个,0,8就表示第一页,8,8表示第二页,16,8表示第三页以此类推,后面的排序类型需要在资源搜索的方法中自行实现
11 /**服务器端获取指定资源的详细内容,包括资源中有什么文件,有什么图片等等*/
12 var source = Server.GetSource("资源的code");
13 /**服务器端获取指定的资源文件所在的资源的整体信息,可以同时获取到该资源下所有的其他的文件,常用于视频播放时看它的上一个视频和下一个视频等*/
14 var source = server.GetFileInfo("资源文件的code");

由于这个是服务器端主动发送命令给客户端,客户端处理完命令后再发回给服务器的方式,所以客户端这边不需要太多的处理,客户端这边可以直接写成一个后台运行的服务,这样就可以不需要管了,而服务器端这边是可以主动随时发起请求的。下载文件时,用户直接请求服务器,服务器再请求客户端,然后客户端把文件发送到服务器,服务器再转发给客户这种模式。这就要求需要有一个固定的带宽还可以的服务器作为中介来实现内网穿透。

这个库的优点是,获取文件后可以用api来返回文件,这样你可以直接吧这些资源嵌入到页面中,比如视频,图片等,可以直接在页面上浏览播放,不像一众网盘那样,网盘里的东西只能自己看,分享后也只能在他自己的网盘客户端或者网站上才能浏览,不能把链接嵌入到网站中随时去浏览。

标签:code,服务器端,网盘,远程网,获取,var,资源,客户端
From: https://www.cnblogs.com/zhaimaojun/p/18076506/zmjnetdisk

相关文章

  • 静态资源加速cdn
    阿里云CDN产品https://www.aliyun.com/product/cdn什么是cdnhttps协议的证书部署让你的网站更安全为什么需要cdn优势:如果你在经营一家网站,那你应该知道几点因素是你制胜的关键:内容有吸引力访问速度快支持频繁的用户互动可以在各处浏览无障碍从网站的运营商业角度分......
  • 浙大恩特客户资源管理系统-RegulatePriceAction接口SQL注入
    简介杭州恩软信息技术有限公司(浙大恩特)提供外贸管理软件、外贸客户管理软件等外贸软件,是一家专注于外贸客户资源管理及订单管理产品及服务的综合性公司。漏洞简介浙大恩特客户资源管理系统-RegulatePriceAction接口存在SQL注入漏洞,可以利用该漏洞获取数据库中的信息(例如,管理......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的花卉检测与识别系统(附完整资源+PySide6界面+训练代
    摘要:本篇博客介绍了一种基于深度学习的花卉检测与识别系统,并详细展示了其实现代码。系统采取先进的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等早期版本进行了比较,展示了其在图像、视频、实时视频流及批量文件中识别花卉的高准确度。文章深入阐释了YOLOv8的工作机制,并配备了相应的Pyt......
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的PCB板缺陷检测系统(附完整资源+PySide6界面+训练代
    摘要:本文详细阐述了一个利用深度学习进行PCB板缺陷检测的系统,该系统集成了最新的YOLOv8算法,并与YOLOv7、YOLOv6、YOLOv5等先前版本进行了性能比较。该系统能够在图像、视频、实时视频流和批量文件中精确地识别和分类PCB板缺陷。文中不仅深入讲解了YOLOv8算法的工作原理,还提供了完......
  • iOS端创建ReactNative容器第一步:打出jsbundle和资源包
    react-native的打包流程是通过执行react-nativebundle指令进行的。 添加构建指令修改RN项目中的package.json文件,先其中添加构建命令build-release-ios和build-debug-ios"scripts":{"android":"react-nativerun-android","ios":"react-nativerun-ios"......
  • K8S资源管理工具-kor
     Kor是一个用于发现未使用的Kubernetes资源的工具。以下是Kor的安装和使用命令的整理:GitHub:https://github.com/yonahd/kor安装Kor下载二进制文件从Kor的GitHub仓库的Release页面下载适合您操作系统的二进制文件,并将其添加到系统的PATH中。使用Homebrew(......
  • C# 按钮图像指定本地资源后提示“未能找到任何适合于指定的区域性或非特定区域性的资
    查询网上多种解决办法,均未解决,包括命名空间、Properties.Resources.resx文件设置都正常,编译通过,但是只要执行程序都会报“未能找到任何适合于指定的区域性或非特定区域性的资源”的错误, 各种网上的方法和自己想到的可能的原因都试过了,花了两个半天时间,终于找到一个恶心的原因......
  • 为什么数据库连接很消耗资源?
    开发应用程序久了,总想刨根问底,尤其对一些有公共答案的问题。大家都能解释,但是追根究底,都解释不清。凡是都有为什么,而且用数字说明问题是最直观的。本文主要想探究一下连接数据库的细节,尤其是在Web应用中要使用数据库来连接池,以免每次发送一次请求就重新建立一次连接。对于这个问题......
  • linux系统创建私有容器仓库和docker容器的资源限制
    私有仓库创建和资源限制创建私有仓库docker资源限制系统压力测试工具stresscpu资源限制限制CPUShare限制CPU核数CPU绑定mem资源限制限制IO创建私有仓库上传harbor压缩包解压下载docker-compose进入解压后的目录修改配置文件mvharbor.yml.tmplharbor.ymlv......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2024.03.14)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......