0 0

jcifs 无法访问xp共享目录问题 jcifs.smb.SmbAuthException:20

此代码访问win server下的共享目录没有问题,但是我在自己的xp机器上新建的共享目录,代码访问时出错。
别人访问我的共享目录可以访问。
administrator:admin2006@lude 用户名:密码@主机名 均没错。
有遇到过这个错误的朋友吗? 是xp不允许这么访问吗,还是需要什么设置?
注意:绝对不是用户名和密码错误。

代码如下
public static void main(String[] arg){
		String str = "smb://administrator:admin2006@lude/MediaRoot$/65/84/Event658476/1_1_0912306215.jpg";
		SmbFileInputStream sfis;
		try {
			sfis = new SmbFileInputStream(str);
			SmbFile fromFile = new SmbFile(str);
			long len = fromFile.length();
			byte[] data = new byte[(int)len];
			sfis.read(data);
			BASE64Encoder be = new BASE64Encoder();
			System.out.print(be.encode(data));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


异常信息:
jcifs.smb.SmbAuthException: Logon failure: unknown user name or bad password.
	at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:273)
	at jcifs.smb.SmbSession.send(SmbSession.java:225)
	at jcifs.smb.SmbTree.treeConnect(SmbTree.java:147)
	at jcifs.smb.SmbFile.connect(SmbFile.java:791)
	at jcifs.smb.SmbFile.connect0(SmbFile.java:761)
	at jcifs.smb.SmbFile.open0(SmbFile.java:816)
	at jcifs.smb.SmbFile.open(SmbFile.java:845)
	at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:69)
	at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:62)
	at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:49)
	at cn.com.egova.dti.dao.AdjunctManager.main(AdjunctManager.java:188)
2010年1月21日 17:03

4个答案 按时间排序 按投票排序

0 0

win7:
gpedit.msc -> Windows设置 -> 安全设置 -> 本地策略 -> 安全选项 ->
网络访问:本地帐号的共享和安全模型  修改成 经典-对本地用户进行身份验证,不改变其本来身份(已验证)
xp:
听说是取消系统的简单共享(未验证)

2015年10月23日 10:16
0 0

我以前也试过这样登录失败,第二天就能登录成功了。
JCIFS是很不稳定的。


如果是域登录可以这样

//DOMAIN_IP 		域名服务(其实域名和域名服务器IP可以,不过用IP解析速度快很多。)
//DOMAIN_NAME		域名
//LOGIN_NAME		用户名
//PASSWORD		密码


UniAddress dc = UniAddress.getByName(DOMAIN_IP);
NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication(DOMAIN_NAME, LOGIN_NAME, PASSWORD);
SmbSession.logon(dc, authentication);

SmbFile remoteFile = new SmbFile(fileURL,  authentication);
//........接下来的会写代码的都会啦~~~


2010年1月21日 20:00
0 0

这个是我写的例子

package org;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbFileOutputStream;

public class Smbtest {
	public static void smbGet(String remoteUrl, String localDir) {
		InputStream in = null;
		OutputStream out = null;
		try {
			SmbFile remoteFile = new SmbFile(remoteUrl);
			if (remoteFile == null) {
				System.out.println("共享文件不存在");
				return;
			}
			String fileName = remoteFile.getName();
			File localFile = new File(localDir + File.separator + fileName);
			in = new BufferedInputStream(new SmbFileInputStream(remoteFile));
			out = new BufferedOutputStream(new FileOutputStream(localFile));
			byte[] buffer = new byte[1024];
			while (in.read(buffer) != -1) {
				out.write(buffer);
				buffer = new byte[1024];
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	public static void smbPut(String remoteUrl, String localFilePath) {
		InputStream in = null;
		OutputStream out = null;
		try {
			File localFile = new File(localFilePath);
			System.out.println("bbbbbbbb");
			String fileName = localFile.getName();
			SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);
			
			in = new BufferedInputStream(new FileInputStream(localFile));
			out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
			byte[] buffer = new byte[1024];
			while (in.read(buffer) != -1) {
				out.write(buffer);
				buffer = new byte[1024];
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		smbPut("smb://administrator:@192.168.2.137/aaa","c:/1.zip");
		smbGet("smb://administrator:@192.168.2.137/aaa/1.zip","d:/");
	}

}

2010年1月21日 17:54
0 0

如果你得机器在域里那就没法子了 域里就会出这个问题。

2010年1月21日 17:52

相关推荐

    jcifs java远程访问

    Java Community Interface for File Systems (JCIFS) 是一个开源的Java库,它允许Java应用程序通过SMB(Server Message Block)协议来实现对网络上共享资源的访问。标题中的“jcifs java远程访问”指的是使用JCIFS库...

    jcifs-1.3.19.jar

    jcifs-1.3.19.jar 包,用于SMB协议 ,以实现远程读取文件。jcifs-1.3.19.jar 包,用于SMB协议 ,以实现远程读取文件。

    jcifs-1.3.17.jar

    1. **文件上传**:JCIFS库提供了API,使得Java程序能够将本地文件上传到网络上的共享目录。通过创建SmbFile对象并调用其writeFile或OutputStream方法,可以实现文件的上传操作。 2. **文件下载**:同样,JCIFS库也...

    jcifs-ext-0.9.4.jar/jcifs-1.3.3.jar

    标题中的"jcifs-ext-0.9.4.jar"和"jcifs-1.3.3.jar"是Java库文件,它们主要用于处理SMB(Server Message Block)协议,这是一个广泛用于网络共享文件、打印机和其他资源的协议。这些库在Java应用中提供了对Windows...

    jcifs-1.3.12.zip

    通过jcifs实现java访问网络共享文件 jcifs 是 cifs(common internet file system) java的实现 smb (service message block) to be cifs jcifs 是一个开源项目 可从http://jcifs.samba.org/下载 SmbFileInputStream...

    使用smbj.jar访问共享文件夹,解决SMB2/SMB3共享文件夹访问的问题

    使用smbj.jar访问共享文件夹,支持SMB2/SMB3,用于解决使用jcifs.jar不支持SMB2/SMB3的问题

    jcifs-1.3.16.jar及源码

    1. **远程文件读写**:jcifs支持对SMB服务器上的文件进行读取和写入操作,与本地文件系统的操作类似,简化了远程文件操作的复杂性。 2. **文件夹操作**:除了文件,jcifs还支持创建、删除、重命名远程文件夹,以及...

    java共享文件下载依赖包jcifs-1.3.3.jar

    3. **文件操作**:jcifs提供了一系列API,使得开发者可以读取、写入、创建、删除和移动SMB网络上的文件和目录。这些API与Java标准I/O库兼容,易于使用。 4. **流式处理**:jcifs库支持通过输入/输出流进行文件传输...

    jcifs:JCIFS是一个开放源代码客户端库,该库以100%Java实现CIFSSMB网络协议

    JCIFS是一个开放源代码客户端库,该库以100%Java实现了CIFS / SMB网络协议。 从版本2.x开始,此项目从派生而来,现有的jcifs代码被合并为smb1 。 版本 使用Maven &lt;groupId&gt;org.codelibs &lt;artifactId&gt;jcifs ...

    jcifs-1.3.15.jar

    5. **文件共享**:jcifs允许应用程序轻松访问其他共享的网络资源,例如打印机或流媒体服务器,这些服务可能在不同的计算机上但通过SMB协议提供。 6. **异步操作**:jcifs库还支持异步I/O操作,这意味着你可以在不...

    利用jcifs-1.3.15.jar实现共享文件上传下载

    在Java编程环境中,jcifs-1.3.15.jar是一个非常重要的库,它使得开发者能够方便地处理SMB(Server Message Block)协议,也就是Windows操作系统中常用的文件共享协议。这个库允许Java程序访问局域网内的共享文件,...

    jcifs跨服务器操作共享文件夹.tgz

    标题中的"jcifs跨服务器操作共享文件夹.tgz"提到了jcifs库,这是一个Java库,主要用于在不同服务器之间进行SMB(Server Message Block)协议的文件操作,比如访问、读写共享文件夹。SMB是一种广泛用于Windows网络中...

    jcifs-1.3.13.jar

    1. **SMB协议支持**:jcifs库提供了对SMB协议的全面支持,包括身份验证、目录浏览、文件读写、文件锁定等功能。它允许Java程序与使用SMB协议的服务器进行通信,如访问Windows共享、NAS设备或其他支持SMB的系统。 2....

    jcifs API开发文档、jar包等

    4. **权限管理**:jcifs API 支持设置文件和目录的访问权限,例如修改文件的读写权限。 5. **身份验证**:jcifs 提供了多种身份验证机制,包括基本认证、NTLMv1/v2 和 Kerberos,以适应不同的网络环境。 6. **事件...

    域登陆(通过jcifs.http.NtlmHttpFilter实现)

    jcifs是一个开源库,它提供了对SMB(Server Message Block)协议的支持,这个协议广泛用于Windows网络中的文件共享和身份验证。NtlmHttpFilter是jcifs库的一部分,专门用于HTTP请求的NTLM(NT LAN Manager)身份验证...

    jcifs实现集成登录

    3. **资源共享**:jcifs允许Java应用访问和操作Windows网络共享,如读取、写入文件,创建目录等。这在多系统集成的环境中特别有用,因为用户登录一次后,可以在不同的系统间无缝切换,访问共享资源。 4. **安全增强...

    共享文件传输-Jcifs

    1. **文件和目录操作**:jcifs库允许Java程序创建、读取、更新和删除远程CIFS服务器上的文件和目录。这包括打开、关闭、读取文件内容、写入数据、重命名文件或移动文件等操作。 2. **身份验证和权限管理**:jcifs...

    jcifs包 源代码

    1. **SMB协议实现**:jcifs实现了SMB协议的许多关键特性,包括文件和目录的读写、创建、删除,以及网络打印机的访问等。了解这些实现细节可以帮助你更好地理解和处理与SMB相关的网络操作。 2. **网络通信**:jcifs...

Global site tag (gtag.js) - Google Analytics