SharpCifs.Std 0.2.13

Xamarin & .NET Core Ready, SMB/CIFS(Windows shared folder) Access Library.
This is a port of SharpCifs to .NET Standard.
You can access the Windows shared folder, NAS by Xamarin & .NET Core.(= without mpr.dll, Netapi32.dll)  
It's a rework of SharpCifs, and The origin is JCIFS.

Install-Package SharpCifs.Std -Version 0.2.13
dotnet add package SharpCifs.Std --version 0.2.13
<PackageReference Include="SharpCifs.Std" Version="0.2.13" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SharpCifs.Std --version 0.2.13
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

SharpCifs.Std

Xamarin & .NET Core Ready, SMB/CIFS(Windows shared folder) Access Library.
This is a port of SharpCifs to .NET Standard.

Project Site:
http://sharpcifsstd.dobes.jp/

Xamarin/.NET Core対応のSMB/CIFS(Windows共有)アクセスライブラリです。
SharpCifsを .NET Standard に移植したものです。

Description

You can access the Windows shared folder, NAS by Xamarin, .NET Core.(= without mpr.dll, Netapi32.dll)
It's a rework of SharpCifs, and The origin is JCIFS.

Windowsの共有フォルダやNASへ、Xamarin/.NET Coreアプリからアクセス出来ます。
JCIFSのWindows Phone 8.1移植版だったSharpCifsを、.NET Standardで動作するように修正しました。

Supports .NET Standard 1.3 (= Xamarin.Android/iOS1.0, .NET Core1.0, .NET Framework 4.6)

Requirement

System.Console (>= 4.3.0)
System.Net.NameResolution (>= 4.3.0)
System.Net.NetworkInformation (>= 4.3.0)
System.Net.Sockets (>= 4.3.0)
System.Security.Cryptography.Algorithms (>= 4.3.0)
System.Security.Cryptography.Primitives (>= 4.3.0)
System.Threading.Tasks (>=4.3.0)
~System.Threading.Thread (>= 4.3.0)~ <-removed

Usage

  1. Add NuGet Package to your project, or download this and add ref SharpCifs.STD1.3/SharpCifs.STD1.3.csproj
  2. setting, ussage are same as JCIFS.

 

  1. プロジェクトにNuGetパッケージを追加するか、
     もしくはこのソースをダウンロードの上 SharpCifs.STD1.3/SharpCifs.STD1.3.csproj をプロジェクト参照してください。
  2. 設定や使い方は、JCIFSに準じます。

 

Get items in shared folder:

//using System;
//using SharpCifs.Smb;

//Get SmbFile-Object of a folder.
var folder = new SmbFile("smb://UserName:Password@ServerIP/ShareName/FolderName/");

//UnixTime
var epocDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

//List items
foreach (SmbFile item in folder.ListFiles())
{
    var lastModDate = epocDate.AddMilliseconds(item.LastModified())
                              .ToLocalTime();

    var name = item.GetName();
    var type = item.IsDirectory() ? "dir" : "file";
    var date = lastModDate.ToString("yyyy-MM-dd HH:mm:ss");
    var msg = $"{name} ({type}) - LastMod: {date}";
    Console.WriteLine(msg);
}

 

Read a File:

//using System;
//using System.IO;
//using System.Text;
//using SharpCifs.Smb;

//Get target's SmbFile.
var file = new SmbFile("smb://UserName:Password@ServerIP/ShareName/Folder/FileName.txt");

//Get readable stream.
var readStream = file.GetInputStream();

//Create reading buffer.
var memStream = new MemoryStream();

//Get bytes.
((Stream)readStream).CopyTo(memStream);

//Dispose readable stream.
readStream.Dispose();

Console.WriteLine(Encoding.UTF8.GetString(memStream.ToArray()));

 

Create a new File:

//using System.Text;
//using SharpCifs.Smb;

//Get the SmbFile specifying the file name to be created.
var file = new SmbFile("smb://UserName:Password@ServerIP/ShareName/Folder/NewFileName.txt");

//Create file.
file.CreateNewFile();

//Get writable stream.
var writeStream = file.GetOutputStream();

//Write bytes.
writeStream.Write(Encoding.UTF8.GetBytes("Hello!"));

//Dispose writable stream.
writeStream.Dispose();

 

Scan Servers & Shares on LAN:

//using System;
//using SharpCifs.Smb;

//When using the host name when connecting,
//When using the host name when connecting,
//Change default local port(137) to a value larger than 1024.
//In many cases, use of the well-known port is restricted.
//
// ** If possible, using IP addresses instead of host names 
// ** to get better performance.
//
SharpCifs.Config.SetProperty("jcifs.smb.client.lport", "8137");

//Get local workgroups.
var lan = new SmbFile("smb://", "");
var workgroups = lan.ListFiles();

foreach (var workgroup in workgroups)
{
    Console.WriteLine($"Workgroup Name = {workgroup.GetName()}");

    try
    {
        //Get servers in workgroup.
        var servers = workgroup.ListFiles();
        foreach (var server in servers)
        {
            Console.WriteLine($"{workgroup.GetName()} - Server Name = {server.GetName()}");

            try
            {
                //Get shared folders in server.
                var shares = server.ListFiles();

                foreach (var share in shares)
                {
                    Console.WriteLine($"{workgroup.GetName()}{server.GetName()} - Share Name = {share.GetName()}");
                }
            }
            catch (Exception)
            {
                Console.WriteLine($"{workgroup.GetName()}{server.GetName()} - Access Denied");
            }
        }
    }
    catch (Exception)
    {
        Console.WriteLine($"{workgroup.GetName()} - Access Denied");
    }
}

More samples: http://sharpcifsstd.dobes.jp/#howtouse

Licence

LGPL v2.1 Licence

Showcase

ComicLAN (Xamarin.iOS implements - App Store link)

Author

Do-Be's

Links

Project Site:
http://sharpcifsstd.dobes.jp/

GitHub - zinkpad/SharpCifs: SharpCifs is a port of JCIFS to C#
https://github.com/zinkpad/SharpCifs

JCIFS - The Java CIFS Client Library
https://jcifs.samba.org/

SharpCifs.Std

Xamarin & .NET Core Ready, SMB/CIFS(Windows shared folder) Access Library.
This is a port of SharpCifs to .NET Standard.

Project Site:
http://sharpcifsstd.dobes.jp/

Xamarin/.NET Core対応のSMB/CIFS(Windows共有)アクセスライブラリです。
SharpCifsを .NET Standard に移植したものです。

Description

You can access the Windows shared folder, NAS by Xamarin, .NET Core.(= without mpr.dll, Netapi32.dll)
It's a rework of SharpCifs, and The origin is JCIFS.

Windowsの共有フォルダやNASへ、Xamarin/.NET Coreアプリからアクセス出来ます。
JCIFSのWindows Phone 8.1移植版だったSharpCifsを、.NET Standardで動作するように修正しました。

Supports .NET Standard 1.3 (= Xamarin.Android/iOS1.0, .NET Core1.0, .NET Framework 4.6)

Requirement

System.Console (>= 4.3.0)
System.Net.NameResolution (>= 4.3.0)
System.Net.NetworkInformation (>= 4.3.0)
System.Net.Sockets (>= 4.3.0)
System.Security.Cryptography.Algorithms (>= 4.3.0)
System.Security.Cryptography.Primitives (>= 4.3.0)
System.Threading.Tasks (>=4.3.0)
~System.Threading.Thread (>= 4.3.0)~ <-removed

Usage

  1. Add NuGet Package to your project, or download this and add ref SharpCifs.STD1.3/SharpCifs.STD1.3.csproj
  2. setting, ussage are same as JCIFS.

 

  1. プロジェクトにNuGetパッケージを追加するか、
     もしくはこのソースをダウンロードの上 SharpCifs.STD1.3/SharpCifs.STD1.3.csproj をプロジェクト参照してください。
  2. 設定や使い方は、JCIFSに準じます。

 

Get items in shared folder:

//using System;
//using SharpCifs.Smb;

//Get SmbFile-Object of a folder.
var folder = new SmbFile("smb://UserName:Password@ServerIP/ShareName/FolderName/");

//UnixTime
var epocDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

//List items
foreach (SmbFile item in folder.ListFiles())
{
    var lastModDate = epocDate.AddMilliseconds(item.LastModified())
                              .ToLocalTime();

    var name = item.GetName();
    var type = item.IsDirectory() ? "dir" : "file";
    var date = lastModDate.ToString("yyyy-MM-dd HH:mm:ss");
    var msg = $"{name} ({type}) - LastMod: {date}";
    Console.WriteLine(msg);
}

 

Read a File:

//using System;
//using System.IO;
//using System.Text;
//using SharpCifs.Smb;

//Get target's SmbFile.
var file = new SmbFile("smb://UserName:Password@ServerIP/ShareName/Folder/FileName.txt");

//Get readable stream.
var readStream = file.GetInputStream();

//Create reading buffer.
var memStream = new MemoryStream();

//Get bytes.
((Stream)readStream).CopyTo(memStream);

//Dispose readable stream.
readStream.Dispose();

Console.WriteLine(Encoding.UTF8.GetString(memStream.ToArray()));

 

Create a new File:

//using System.Text;
//using SharpCifs.Smb;

//Get the SmbFile specifying the file name to be created.
var file = new SmbFile("smb://UserName:Password@ServerIP/ShareName/Folder/NewFileName.txt");

//Create file.
file.CreateNewFile();

//Get writable stream.
var writeStream = file.GetOutputStream();

//Write bytes.
writeStream.Write(Encoding.UTF8.GetBytes("Hello!"));

//Dispose writable stream.
writeStream.Dispose();

 

Scan Servers & Shares on LAN:

//using System;
//using SharpCifs.Smb;

//When using the host name when connecting,
//When using the host name when connecting,
//Change default local port(137) to a value larger than 1024.
//In many cases, use of the well-known port is restricted.
//
// ** If possible, using IP addresses instead of host names 
// ** to get better performance.
//
SharpCifs.Config.SetProperty("jcifs.smb.client.lport", "8137");

//Get local workgroups.
var lan = new SmbFile("smb://", "");
var workgroups = lan.ListFiles();

foreach (var workgroup in workgroups)
{
    Console.WriteLine($"Workgroup Name = {workgroup.GetName()}");

    try
    {
        //Get servers in workgroup.
        var servers = workgroup.ListFiles();
        foreach (var server in servers)
        {
            Console.WriteLine($"{workgroup.GetName()} - Server Name = {server.GetName()}");

            try
            {
                //Get shared folders in server.
                var shares = server.ListFiles();

                foreach (var share in shares)
                {
                    Console.WriteLine($"{workgroup.GetName()}{server.GetName()} - Share Name = {share.GetName()}");
                }
            }
            catch (Exception)
            {
                Console.WriteLine($"{workgroup.GetName()}{server.GetName()} - Access Denied");
            }
        }
    }
    catch (Exception)
    {
        Console.WriteLine($"{workgroup.GetName()} - Access Denied");
    }
}

More samples: http://sharpcifsstd.dobes.jp/#howtouse

Licence

LGPL v2.1 Licence

Showcase

ComicLAN (Xamarin.iOS implements - App Store link)

Author

Do-Be's

Links

Project Site:
http://sharpcifsstd.dobes.jp/

GitHub - zinkpad/SharpCifs: SharpCifs is a port of JCIFS to C#
https://github.com/zinkpad/SharpCifs

JCIFS - The Java CIFS Client Library
https://jcifs.samba.org/

Release Notes

fix WrappedSystemStream.Dipose, update HexDump. Thanks mukmyash and anat0li!

Showing the top 1 GitHub repositories that depend on SharpCifs.Std:

Repository Stars
thecodrr/BreadPlayer
Bread Player, a free and open source music player powered by UWP and C#/.NET with a sleek and polished design built for, and by, the people seeking a better alternative to Groove and Windows Media Player by Microsoft.

Version History

Version Downloads Last updated
0.2.13 13,136 4/11/2019
0.2.12 53,607 2/4/2018
0.2.11 4,534 9/30/2017
0.2.10 266 9/22/2017
0.2.9 593 7/2/2017
0.2.8 311 6/20/2017
0.2.7 296 6/20/2017
0.2.6 296 6/5/2017
0.2.5 406 5/12/2017
0.2.4 329 5/10/2017
0.2.3 288 5/9/2017
0.2.2 275 5/8/2017
0.2.0 304 5/4/2017
0.1.8-beta1 259 4/10/2017
0.1.6-beta1 369 3/1/2017
0.1.5-beta1 327 12/31/2016
0.1.3-beta1 398 12/27/2016
0.1.0-beta1 371 12/27/2016