"com.hierynomus.mssmb2.SMBApiException: STATUS_BAD_NETWORK_NAME (0xc00000cc): 无法连接到 \\\\smbproxy\\greatplains\

问题描述

我正在尝试使用 hierynomus(SMB 协议)从 Linux 机器访问文件并收到此错误

这是我的代码

import java.util.EnumSet;
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.springframework.stereotype.Component;

import com.hierynomus.msdtyp.AccessMask;
import com.hierynomus.mssmb2.SMB2Createdisposition;
import com.hierynomus.mssmb2.SMB2ShareAccess;
import com.hierynomus.smbj.SMBClient;
import com.hierynomus.smbj.SmbConfig;
import com.hierynomus.smbj.auth.AuthenticationContext;
import com.hierynomus.smbj.connection.Connection;
import com.hierynomus.smbj.session.Session;
import com.hierynomus.smbj.share.diskShare;
import com.hierynomus.smbj.share.File;
import com.hierynomus.smbj.transport.tcp.async.AsyncDirectTcpTransportFactory;


@Component
public class SMBHelper {

    private static String USERNAME = "***********";// username
    private static String PASSWORD = "***********"; // password
    private static String DOMAIN = "***********"; // Domain
    private static String sharename = "greatplainsfast"; // sharename
    private static final String SHARE_SRC_DIR = "greatplains";
    private static final String SHARE_DST_DIR = "archive";

    
    public static List<String> getFiles(String pathId) {
        // Set the timeout (optional)
        SmbConfig config = SmbConfig.builder()
                 .withMultiProtocolNegotiate(true)
                 .withSigningrequired(true)
                 .withTransportLayerFactory(new AsyncDirectTcpTransportFactory<>())
                 .withTimeout(120,TimeUnit.SECONDS)
                 .withTimeout(120,TimeUnit.SECONDS) // Timeout sets read,write and Transact timeouts (default is 60 seconds)
                 .withSoTimeout(180,TimeUnit.SECONDS) // Socket timeout (default is 0 seconds)
                .build();
        
        
        SMBClient client = new SMBClient(config);
 
        try {
            Connection connection = client.connect(DOMAIN ); 
            AuthenticationContext ac = new AuthenticationContext(USERNAME,PASSWORD.tochararray(),DOMAIN);
            
            Session session = connection.authenticate(ac);
            

            // Connect to a shared folder
            diskShare share = (diskShare) session.connectShare("greatplainsfast");
            
            if (share.fileExists(pathId)) {
                
                File smbFileRead = share.openFile(pathId,EnumSet.of(AccessMask.GENERIC_READ),null,SMB2ShareAccess.ALL,SMB2Createdisposition.FILE_OPEN,null);
                
            } else {
                System.out.println("File does not exist");
            }

错误 成功连接到:smbproxy\n","stream":"stdout","time":"2021-01-27T16:50:13.128311213Z"}

c.hierynomus.smbj.connection.Connection :在 smbproxy 上成功验证了 Greatplains,会话是 3455975439\n","time":"2021-01-27T16:50:13.138414333Z" }

com.hierynomus.smbj.session.Session:在会话 3455975439\n","time":"2021-01-27T16:50:13.14037554Z 上连接到 \\smbproxy\greatplainsfast "}

{"log":"com.hierynomus.mssmb2.SMBApiException: STATUS_ACCESS_DENIED (0xc0000022): 无法连接到 \\smbproxy\greatplainsfast\n","stream":"stderr","time":"2021- 01-27T16:50:13.14302621Z"}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)