SMTSP 1.0.13
See the version list below for details.
dotnet add package SMTSP --version 1.0.13
NuGet\Install-Package SMTSP -Version 1.0.13
<PackageReference Include="SMTSP" Version="1.0.13" />
<PackageVersion Include="SMTSP" Version="1.0.13" />
<PackageReference Include="SMTSP" />
paket add SMTSP --version 1.0.13
#r "nuget: SMTSP, 1.0.13"
#:package SMTSP@1.0.13
#addin nuget:?package=SMTSP&version=1.0.13
#tool nuget:?package=SMTSP&version=1.0.13
SMTSP - Send Me That Shit Protocol
Very work in progress. Shouldn't be used in production just jet.
Available on NuGet.
The SMTS-Protocol is what powers InterShare. It allows us to send data between devices in a very high level way. So we don't have to care how data is transferred. This protocol includes a discovery-service, which is used to discover nearby devices, and the actual transfer-service to send the data to the desired peripheral.
Examples
Discovering devices:
var myDevice = new DeviceInfo(
deviceId: "EE27A6ED-6F30-4299-A35F-AC3B7139F733",
deviceName: "My Device",
port: 42013,
deviceType: DeviceTypes.Phone,
ipAddress: "192.168.1.42",
capabilities: new[] { "InterShare" }
);
var discovery = new DeviceDiscovery(myDevice);
disocvery.StartDiscovering();
discovery.DiscoveredDevices.CollectionChanged += (sender, args) =>
{
// Some device was discovered.
};
Advertise a device:
var discovery = new DeviceDiscovery(myDevice);
discovery.Advertise();
Sending a file:
FileStream file = File.OpenRead("file.txt");
var content = new SmtspFileContent
{
FileName = "SomeFile.txt",
DataStream = file
};
await SmtspSender.Send(_receiver, content, _sender);
Receiving a file:
var receiver = new SmtspReceiver();
receiver.StartReceiving();
receiver.RegisterTransferRequestCallback((TransferRequest request) => Task.FromResult(true));
receiver.OnContentReceive += (sender, content) =>
{
FileStream stream = File.OpenWrite("File.txt");
content.DataStream?.CopyTo(stream);
};
Discovery
To increase the chance of discovering devices, SMTSP uses multiple technologies to advertise and discover peripherals. <br />
The first method uses UDP Broadcasts to send out lookup signals and listen for responses. The second method uses MDNS-Service Discovery.
Transfer
To transfer the data, the current implementation only uses a TCP Socket. Future plans also include a Bluetooth discovery and transfer.
| 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 was computed. 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 was computed. 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 was computed. |
| .NET Framework | net461 was computed. net462 was computed. 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. |
-
.NETStandard 2.0
- Common.Logging (>= 3.4.1)
- IPNetwork2 (>= 2.1.2)
- Makaretu.Dns (>= 2.0.1)
-
net6.0
- Common.Logging (>= 3.4.1)
- IPNetwork2 (>= 2.1.2)
- Makaretu.Dns (>= 2.0.1)
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 |
|---|---|---|
| 2.1.2-beta | 383 | 7/31/2022 |
| 2.1.1-beta | 307 | 7/30/2022 |
| 2.1.0-beta | 447 | 5/22/2022 |
| 2.0.0-beta | 395 | 5/7/2022 |
| 1.0.13 | 773 | 3/30/2022 |
| 1.0.12 | 692 | 3/19/2022 |
| 1.0.11 | 706 | 3/19/2022 |
| 1.0.10 | 868 | 3/12/2022 |
| 1.0.9 | 680 | 3/12/2022 |
| 1.0.8 | 569 | 3/12/2022 |
| 1.0.7 | 582 | 3/12/2022 |
| 1.0.6 | 586 | 3/8/2022 |
| 1.0.5 | 589 | 2/20/2022 |
| 1.0.4 | 590 | 2/20/2022 |
| 1.0.3 | 587 | 2/19/2022 |