Spring Boot 使用 SMB 协议

2025/4/14

向全栈工程师迈进!

一、详述SMB协议

SMB(Server Message Block)协议是一个网络文件共享协议,它使得计算机可以在网络中共享文件、打印机以及其他资源。SMB 主要用于 Windows 操作系统,但也有其他平台(如 Linux 和 macOS)可以实现 SMB 协议的支持。

SMB 协议使用客户端-服务器模型,其中客户端向服务器请求共享文件、打印机等资源。SMB 提供了多种功能,如:

  1. 文件共享:客户端可以请求服务器共享的文件,进行读取、写入等操作。

  2. 打印机共享:客户端可以向服务器共享的打印机发送打印任务。

  3. 网络浏览:客户端可以浏览网络中可用的共享资源。

  4. 验证和权限控制:客户端在请求资源时,服务器会验证其身份,并根据权限控制访问。

SMB 协议基于请求和应答机制,客户端通过发送请求(例如文件打开、文件读取、文件写入等)与服务器进行通信,服务器根据请求进行相应的操作,然后返回结果。

1.1 SMB 协议的工作流程

  • 客户端发送请求:客户端通过网络发送 SMB 请求,请求某个资源(如共享文件夹、打印机等)。

  • 服务器验证身份:服务器通常会验证客户端的身份,如果验证成功,它会检查客户端对目标资源的访问权限。

  • 资源操作:客户端可以请求对共享资源执行各种操作,如读取文件、写入文件、删除文件等。

  • 服务器响应:服务器根据客户端的请求执行操作,并返回响应结果。

二、SMB协议的使用

2.1 实际应用示例----文件共享 

假设你在一个局域网内有两台计算机,分别是 A 和 B。计算机 B 共享了一个文件夹,计算机 A 需要访问这个文件夹中的文件。

  • 计算机 B:在共享设置中,选择将某个文件夹共享出来,配置访问权限(如只读或读写权限)。

  • 计算机 A:通过文件资源管理器,输入 B 计算机的 IP 地址或计算机名,访问共享文件夹。

    • 例如,在 Windows 上,A 计算机可以通过 \\192.168.1.100\shared_folder 访问 A 的共享文件夹

在这个过程中,SMB 协议会负责客户端(计算机 A)和服务器(计算机 B)之间的通信,确保文件传输的顺利进行

以下通过 Java 访问计算机 B 上的共享文件夹(比如在计算机 B 上共享了一个文件夹 shared_folder),现在使用 JCIFS,这是一个开源的 Java 库,允许通过 SMB 协议与共享资源交互。以下是使用 JCIFS 实现计算机 A 访问计算机 B 上的共享文件夹的示例。

2.2添加依赖

<dependency><groupId>jcifs</groupId><artifactId>jcifs</artifactId><version>1.3.17</version>
</dependency>

2.3代码

最核心的代码 SmbFile sharedFolder = new SmbFile(sharedFolderPath, auth),通过传入计算机 B 上共享文件夹的地址(要以MSB协议能看懂的格式,例如:"smb://192.168.1.100/shared_folder/")以及一些用户信息创建了一个连接共享文件夹的对象sharedFolder。然后通过这个连接的共享文件夹对象就可以读取相应的要访问的内容了。

import jcifs.smb.*;public class SMBExample {public static void main(String[] args) {String username = "yourUsername"; // 计算机 B 上的用户名String password = "yourPassword"; // 计算机 B 上的密码String sharedFolderPath = "smb://192.168.1.100/shared_folder/"; // 计算机 B 上共享文件夹的地址// 设置认证信息NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("", username, password);try {// 连接到共享文件夹SmbFile sharedFolder = new SmbFile(sharedFolderPath, auth);// 检查共享文件夹是否存在if (sharedFolder.exists()) {System.out.println("Successfully connected to the shared folder!");// 读取共享文件夹中的文件列表SmbFile[] files = sharedFolder.listFiles();if (files != null) {for (SmbFile file : files) {System.out.println("Found file: " + file.getName());}}} else {System.out.println("Shared folder does not exist.");}} catch (SmbException e) {System.out.println("SMB Exception: " + e.getMessage());} catch (Exception e) {System.out.println("Exception: " + e.getMessage());}}
}

2025/4/14

dream dream 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/76926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring编程式事务(本地事务)

使用 TransactionTemplate等类和 API 手动管理事务&#xff0c;控制事务的新建、提交、回滚等过程 方式一&#xff1a;使用 TransactionTemplate&#xff08;推荐方式&#xff09; Service public class OrderService {private final TransactionTemplate transactionTemplat…

itext7 html2pdf 将html文本转为pdf

1、将html转为pdf需求分析 经常会看到爬虫有这样的需求&#xff0c;将某一个网站上的数据&#xff0c;获取到了以后&#xff0c;进行分析&#xff0c;然后将需要的数据进行存储&#xff0c;也有将html转为pdf进行存储&#xff0c;作为原始存档&#xff0c;当然这里看具体的需求…

企业级低代码平台的架构范式转型研究

在快速迭代的数字时代&#xff0c;低代码平台如同一股清流&#xff0c;悄然成为开发者们的新宠。 它利用直观易用的拖拽式界面和丰富的预制组件&#xff0c;将应用程序的开发过程简化到了前所未有的程度。通过封装复杂的编程逻辑和提供强大的集成能力&#xff0c;低代码平台让…

C++ | STL之list详解:双向链表的灵活操作与高效实践

引言 std::list 是C STL中基于双向链表实现的顺序容器&#xff0c;擅长高效插入和删除操作&#xff0c;尤其适用于频繁修改中间元素的场景。与std::vector不同&#xff0c;std::list的内存非连续&#xff0c;但提供了稳定的迭代器和灵活的元素管理。本文将全面解析std::list的…

AI运算服务器工控机特点与应用

AI运算服务器工控机是专门针对工业环境设计的计算设备&#xff0c;结合了传统工控机&#xff08;工业控制计算机&#xff09;的可靠性与AI服务器的强大算力&#xff0c;广泛应用于智能制造、边缘计算、机器视觉、自动化控制等领域。以下是其核心特点、应用场景及选型建议&#…

25/4/9 算法笔记 DBGAN+强化学习+迁移学习实现青光眼图像去模糊1

整体实验介绍 实验主要是结合DBGAN对抗网络强化学习增强迁移学习增强实现青光眼图像去模糊。今天则是先完成了DBGAN板块模型的训练。 实验背景介绍 青光眼的主要特征有&#xff1a; 视盘形态与杯盘比CDR&#xff1a;青光眼患者主要表现为视杯扩大&#xff0c;盘沿变窄。 视…

智能复盘自动化系统搭建指南—基于DeepSeek API与Apple日历的整合实践

一、系统架构设计 本方案通过iOS快捷指令实现日历数据与AI分析的自动化交互&#xff0c;核心流程包含&#xff1a; 日历事件管理 创建每日循环的"AI复盘"日历事项实现当日备注信息的动态更新 数据处理模块时间日志标准化处理多维度数据特征提取 AI交互层对接DeepSeek…

01 位运算

12days 章节结构 00 算法前导课-编程基础&#xff08;自学的视频&#xff09; 01 位运算的奇巧淫技 02 查找与排序&#xff08;上&#xff09; 03 数组、查找与排序(下) 04 多维数组与矩阵 05 字符串专题 06 基本数学问题 06 递归、DFS、剪枝、回溯等问题 07 贪心策…

HDFS Full Block Report超限导致性能下降的原因分析

文章目录 前言发现问题失败的为什么是FBR块汇报频率的变化为什么FBR会反复失败HDFS性能下降导致Yarn负载变高的形式化分析理解线程理解IO Wait理解HDFS性能下降导致Yarn负载和使用率增高 引用 前言 我们的Yarn Cluster主要用来运行一批由Airflow定时调度的Spark Job&#xff0…

【Kubernetes基础--Pod深入理解】--查阅笔记2

深入理解Pod 为什么要有个Pod1. 容器协作与资源共享2. 简化调度和资源管理3. 设计模式支持 Pod 基本用法Pod 容器共享 VolumePod 的配置管理ConfigMap 概述创建 ConfigMap 资源对象在 Pod 中使用 ConfigMap使用 ConfigMap 的限制条件 为什么要有个Pod Pod 的引入并非技术冗余&…

Margin和Padding在WPF和CSS中的不同

CSS和WPF中 margin 与 padding 在方向上的规定基本一致&#xff0c;但在使用场景和一些细节上有所不同。 CSS - 方向规定&#xff1a; margin 和 padding 属性可以分别指定上、右、下、左四个方向的值。例如 margin:10px 20px 30px 40px; 表示上外边距为10px、右外边距为20…

gravity`(控制 View 内部内容的对齐方式)

文章目录 **1. 常用取值****示例** **2. layout_gravity&#xff08;控制 View 在父容器中的对齐方式&#xff09;****常用取值****示例** **3. gravity vs layout_gravity 对比****4. 注意事项****5. 总结** 作用对象&#xff1a;当前 View 的内部内容&#xff08;如 TextView…

Go:使用共享变量实现并发

竞态 在串行程序中&#xff0c;步骤执行顺序由程序逻辑决定&#xff1b;而在有多个 goroutine 的并发程序中&#xff0c;不同 goroutine 的事件先后顺序不确定&#xff0c;若无法确定两个事件先后&#xff0c;它们就是并发的。若一个函数在并发调用时能正确工作&#xff0c;称…

Vue3 SSR Serverless架构革命:弹性计算与量子加速

一、全维度Serverless SSR架构 1.1 蜂巢式弹性调度系统 1.2 冷启动时间优化表 优化策略Node.js冷启(ms)Deno冷启(ms)Bun冷启(ms)裸启动1800960420预编译二进制650380210内存快照预热22016090WASM实例池15011075量子状态预载453832 二、边缘渲染协议升级 2.1 流式SSR响应协议…

FPAG IP核调用小练习

一、调用步骤 1、打开Quartus 右上角搜索ROM&#xff0c;如图所示 2、点击后会弹出如图所示 其中文件路径需要选择你自己的 3、点击OK弹出如图所示 图中红色改为12与1024 4、然后一直点NEXT&#xff0c;直到下图 这里要选择后缀为 .mif的文件 5、用C语言生成 .mif文件 //…

Spring Cloud 服务间调用深度解析

前言 在构建微服务架构时&#xff0c;服务间的高效通信是至关重要的。Spring Cloud 提供了一套完整的解决方案来实现服务间的调用、负载均衡、服务发现等功能。本文将深入探讨 Spring Cloud 中服务之间的调用机制&#xff0c;并通过源码片段和 Mermaid 图表帮助读者更好地理解…

AF3 generate_chain_data_cache脚本解读

AlphaFold3 generate_chain_data_cache 脚本在源代码的scripts文件夹下。该脚本从指定目录中批量解析 mmCIF/PDB 文件的工具,并将每个链的基本信息(序列、分辨率、是否属于聚类等)提取并写入 JSON 文件,主要用于后续蛋白质建模、过滤或训练数据准备。 源代码: import ar…

vue项目打包部署到maven仓库

需要的资源文件&#xff0c;都放在根目录下&#xff1a; 1. versionInfo.js const fs require(fs) const path require(path) const mkdirp require(mkdirp) const spawn require(child_process).spawnconst packageObj require(./package.json) const versionNo packa…

MegaTTS3: 下一代高效语音合成技术,重塑AI语音的自然与个性化

在近期的发布中&#xff0c;浙江大学赵洲教授团队与字节跳动联合推出了革命性的第三代语音合成模型——MegaTTS3&#xff0c;该模型不仅在多个专业评测中展现了卓越的性能&#xff0c;还为AI语音的自然性和个性化开辟了新的篇章。 MegaTTS3技术亮点 零样本语音合成 MegaTTS3采用…

【教程】PyTorch多机多卡分布式训练的参数说明 | 附通用启动脚本

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 torchrun 一、什么是 torchrun 二、torchrun 的核心参数讲解 三、torchrun 会自动设置的环境变量 四、torchrun 启动过程举例 机器 A&#…