使用Mono on LAN上传到Android设备上的Windows网络共享

时间:2015-12-05 15:41:22

标签: c# android mono xamarin.android pinvoke

我已经阅读了一些相关的帖子,但我有一个问题无法明确回答,所以我发布了这个帖子。

我正在使用Mono创建一个C#Android应用程序,该应用程序可以选择将文件备份到多个在线共享,OneDrive,Google Cloud,FTP和本地网络共享。

除了上传到本地网络共享之外,所有其他方法都已排序。 我们的想法是,人们将在高速本地无线网络中使用它,这将直接将数据直接复制到服务器上的共享中。 \ SERVER \份额

问题在于,您无法将凭据传递给File.Copy() 那么最好的方法是什么?

1。)据说你可以从MPR.dll P \ Invoke WNetAddConnection2。这在Windows上运行良好,但在Android上提供DllNotFound。是否可以将此库复制到手机,P \为此功能调用它? How to provide user name and password when connecting to a network share

2.。)可以使用WindowsIdentity使用Impersonation,再次,在Windows机器上运行良好,但是它可以在Android手机上运行吗?

3。)我可以使用SMB协议扫描\访问本地网络,据我所知,我一直在查看CIFSClient库,但它似乎不适合我在一分钟。

4.。)是否有可以从Mono调用的Java方法,只需通过网络进行复制即可?

为任何帮助干杯, ç

编辑:现在全部排序。 JCIFS绑定库完成了这个技巧。

1 个答案:

答案 0 :(得分:1)

  

1。)是否可以将此(MPR.dll)库复制到手机,P \为这一功能调用它?

否(这是本机Win32库)

  

2.。)可以使用WindowsIdentity使用Impersonation,再次,在Windows机器上运行良好,但是它可以在Android手机上运行吗?

没有

  

3。)我可以使用Samba协议扫描\访问本地网络,据我所知,我一直在查看CIFSClient库,但它似乎并不适合我。

是(关于Samba)

? (关于CIFSClient,从未使用过它)

  

4.。)是否有可以从Mono调用的Java方法,只需通过网络进行复制即可?

否(与SMB共享相关)

Android和Samba:

我使用的是jCIFS,这是一个在Xamarin Android项目上实现Samba协议的纯Java库。

免责声明:这是来自我公共仓库的jCIFS Java to C#绑定库:

Jcifs.Smb.SmbFileInputStream的使用示例:

// This is NOT best-practice code, just showing a demo of an Jcifs api call
public async Task getFileContents ()
{
    await Task.Run (() => {
        var smbStream = new SmbFileInputStream ("smb://guest@10.10.10.5/code/test.txt");
        byte[] b = new byte[8192];
        int n;
        while ((n = smbStream.Read (b)) > 0) {
            Console.Write (Encoding.UTF8.GetString (b).ToCharArray (), 0, n);
        }
        Button button = FindViewById<Button> (Resource.Id.myButton);
        RunOnUiThread(() => {
            button.Text = Encoding.UTF8.GetString (b);
        });
    }
    ).ContinueWith ((Task arg) => {
        Console.WriteLine (arg.Status);
        if (arg.Status == TaskStatus.Faulted)
            Console.WriteLine (arg.Exception);
    }
    );
}

Xamarin C# bindings for Java CIFS (jCIFS) Client Library