美文网首页
SMB协议操作共享文件

SMB协议操作共享文件

作者: 程序员小韩 | 来源:发表于2017-09-04 15:01 被阅读0次

在 java 开发中,避免不了要对共享文件进行操作,前段时间小编就做了类似的需求,这里记录开发中遇到的坑,一是记录,而是希望有同样需求的小伙伴烧踩一些坑。

在连接共享文件时 ,我们避免不了要输入用户名&密码,但是smb协议可以有两种写法

方法一:

/*

*   Smb://(用户名):(密码)@(ip)/(共享文件名称)

*/

String path="Smb://dzjz:123@172.16.192.106/unupload/";

SmbFile smbFile=newSmbFile(path);

然后就可以进行后续的验证了。
但是:::: 这种写法会有个坑,其中的@符是连接作用,假如你的密码中有特殊字符(例如:@!#。。等),这样的话你的共享文件一直是链接不上的,那么有没有解决办法呢  肯定是有的下面我们来时第二种方法

方法二:

/*

* 还是上面的 用户名密码

*/

String domainip="172.16.192.106";

String userName="dzjz";

String passWord="123";

String fileName="unupload";

String url="smb://172.16.192.106/unupload/" ;

NtlmPasswordAuthentication auth =new NtlmPasswordAuthentication(domainip, username, password);

SmbFile outDirFile =newSmbFile(url, auth);

//或者 SmbFile outDirFile =newSmbFile("smb://"+domainip+"/"+fileName+"/", auth);

这样就可以完美解决了用户名或者密码中存在摊位数字符的问题。

这种写法简单的来说就是优先验证用户信息 ,然后给你个封装好的钥匙,再去打开你想要访问的共享文件,具体原理就不在这里说了 有兴趣的大家可以看下源码。

还有一点,也是比较坑的一点:就是smb协议访问的共享文件是加了同步锁的,当有一个smb协议扎起使用连接着当前的共享文件时,其他的协议是无法连接通过的。(关于这一点大家可以看下源码的具体实现。)

相关文章

  • SMB协议操作共享文件

    在 java 开发中,避免不了要对共享文件进行操作,前段时间小编就做了类似的需求,这里记录开发中遇到的坑,一是记录...

  • samba服务配置

    samba是一个实现类UNIX操作系统与WINDOWS操作系统之间共享的一种SMB协议的软件。包括的文件共享和打印...

  • 横向移动之smb中继攻击

    背景知识 什么是SMB服务器消息块(SMB)协议是一种网络文件共享协议,在Microsoft Windows中实现...

  • Linux_160_samba简介

    samba是一款能够让linux系统应用微软文件资料的工具微软制定了SMB协议,用于局域网文件共享,SMB协议全称...

  • Android SMB 简单几步实现手机给电脑传输数据

    SMB是什么 SMB,即"Server Message Block" 服务器信息块,是一个网络文件共享协议,它能被...

  • CentOS上搭建Samba服务器

    前言:Samba是在Linux系统上实现SMB协议的一个服务软件,SMB可以实现在局域网上共享文件和打印机,SMB...

  • linux共享文件夹

    samba是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件。 1.安装samba 使用Xs...

  • 连接打印机报错:win10因文件共享不安全,不能连接共享

    背景:电脑连接打印机时 报错: 因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协...

  • Samba配置文件

    1.smb.conf文件 /etc/samba/smb.conf这个文件大概分为全局配置和共享配置 smb.son...

  • 如何在macos中设置共享文件协议

    当局域网存在多台机器的时候,我们可以采用不同协议的文件共享方式,比如SMB和FTP等方式。在mac上新建共享文件夹...

网友评论

      本文标题:SMB协议操作共享文件

      本文链接:https://www.haomeiwen.com/subject/xuhejxtx.html