TouchSocketPro.Smb
4.3.4
Prefix Reserved
dotnet add package TouchSocketPro.Smb --version 4.3.4
NuGet\Install-Package TouchSocketPro.Smb -Version 4.3.4
<PackageReference Include="TouchSocketPro.Smb" Version="4.3.4" />
<PackageVersion Include="TouchSocketPro.Smb" Version="4.3.4" />
<PackageReference Include="TouchSocketPro.Smb" />
paket add TouchSocketPro.Smb --version 4.3.4
#r "nuget: TouchSocketPro.Smb, 4.3.4"
#:package TouchSocketPro.Smb@4.3.4
#addin nuget:?package=TouchSocketPro.Smb&version=4.3.4
#tool nuget:?package=TouchSocketPro.Smb&version=4.3.4
TouchSocketPro.Smb
TouchSocketPro.Smb provides TouchSocket-style native SMB2 components. It implements TCP framing, SMB2 negotiate/session setup, NTLMv2 authentication, tree connect, echo, file handles, directory queries, and basic file operations without an SMB protocol package dependency. Connection, authentication, share selection, timeout, and transport settings are stored in TouchSocketConfig, matching the setup flow used by TouchSocketPro.Ssh.
var client = new SmbClient();
await client.SetupAsync(new TouchSocketConfig()
.SetRemoteIPHost("192.168.1.10:445")
.SetSmbClientOption(option =>
{
option.DomainName = domainName;
option.UserName = userName;
option.Password = password;
option.ShareName = "Shared";
}));
await client.ConnectAsync();
var result = await client.ListDirectoryAsync("");
await client.CloseAsync();
var service = new SmbService();
await service.SetupAsync(new TouchSocketConfig()
.SetListenIPHosts(445)
.SetSmbServiceOption(new SmbServiceOption
{
ServerName = "TouchSocketSmb"
})
.ConfigurePlugins(pluginManager =>
{
pluginManager.Add(new SmbPasswordPlugin());
}));
service.AddShare("Shared", @"D:\Shared");
await service.StartAsync();
sealed class SmbPasswordPlugin : PluginBase, ISmbConnectingPlugin
{
public Task OnSmbConnecting(SmbSessionClient client, SmbConnectingEventArgs e)
{
e.IsPermitOperation = TryGetPassword(e.DomainName, e.UserName, out var password)
&& e.VerifyPassword(password);
return Task.CompletedTask;
}
}
SMB session lifecycle plugins follow the connection shape separately from file-system access. ISmbConnectingPlugin is raised during SMB authentication, ISmbConnectedPlugin is raised after authentication succeeds, ISmbClosingPlugin is raised before an active close, and ISmbClosedPlugin is raised after the session closes.
sealed class SmbSessionPlugin : PluginBase,
ISmbConnectedPlugin,
ISmbClosingPlugin,
ISmbClosedPlugin
{
public Task OnSmbConnected(SmbSessionClient client, SmbConnectedEventArgs e)
{
LogConnected(e.DomainName, e.UserName, e.Workstation);
return Task.CompletedTask;
}
public Task OnSmbClosing(SmbSessionClient client, ClosingEventArgs e)
{
LogClosing(e.Message);
return Task.CompletedTask;
}
public Task OnSmbClosed(SmbSessionClient client, ClosedEventArgs e)
{
LogClosed(e.Message, e.Exception);
return Task.CompletedTask;
}
}
SMB access lifecycle plugins are intentionally aggregated. Use ISmbAccessingPlugin for pre-access validation and ISmbAccessedPlugin for post-access auditing, then branch by SmbAccessType for share, file, and directory operations.
sealed class SmbAccessPlugin : PluginBase, ISmbAccessingPlugin, ISmbAccessedPlugin
{
public Task OnSmbAccessing(SmbSessionClient client, SmbAccessingEventArgs e)
{
if (e.AccessType == SmbAccessType.Write && IsReadOnly(e.ShareName, e.Path))
{
e.IsPermitOperation = false;
e.Message = "The path is read-only.";
}
return Task.CompletedTask;
}
public Task OnSmbAccessed(SmbSessionClient client, SmbAccessedEventArgs e)
{
LogAccess(e.AccessType, e.ShareName, e.Path, e.Result);
return Task.CompletedTask;
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- TouchSocket (>= 4.3.4)
- TouchSocketPro (>= 4.3.4)
-
.NETStandard 2.0
- TouchSocket (>= 4.3.4)
- TouchSocketPro (>= 4.3.4)
-
.NETStandard 2.1
- TouchSocket (>= 4.3.4)
- TouchSocketPro (>= 4.3.4)
-
net10.0
- TouchSocket (>= 4.3.4)
- TouchSocketPro (>= 4.3.4)
-
net6.0
- TouchSocket (>= 4.3.4)
- TouchSocketPro (>= 4.3.4)
-
net8.0
- TouchSocket (>= 4.3.4)
- TouchSocketPro (>= 4.3.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.3.4 | 65 | 8/27/2026 |