NetPace.Core
0.23.1
Prefix Reserved
dotnet add package NetPace.Core --version 0.23.1
NuGet\Install-Package NetPace.Core -Version 0.23.1
<PackageReference Include="NetPace.Core" Version="0.23.1" />
<PackageVersion Include="NetPace.Core" Version="0.23.1" />
<PackageReference Include="NetPace.Core" />
paket add NetPace.Core --version 0.23.1
#r "nuget: NetPace.Core, 0.23.1"
#:package NetPace.Core@0.23.1
#addin nuget:?package=NetPace.Core&version=0.23.1
#tool nuget:?package=NetPace.Core&version=0.23.1
NetPace.Core
Network speed test library including server discovery, latency measurement, download and upload speed testing.
Quick Start
using NetPace.Core;
using NetPace.Core.Clients.Ookla;
var speedTester = new OoklaSpeedtest() as ISpeedTestService;
var servers = await speedTester.GetServersAsync();
var fastest = await speedTester.GetFastestServerByLatencyAsync(servers);
var downloadResult = await speedTester.GetDownloadSpeedAsync(fastest.Server);
var uploadResult = await speedTester.GetUploadSpeedAsync(fastest.Server);
Console.WriteLine($"{fastest.Server.Sponsor} ({fastest.LatencyMilliseconds} ms)");
Console.WriteLine($"Download: {downloadResult.GetSpeedString(SpeedUnit.BitsPerSecond, SpeedUnitSystem.SI)}");
Console.WriteLine($"Upload: {uploadResult.GetSpeedString(SpeedUnit.BitsPerSecond, SpeedUnitSystem.SI)}");
The example above uses the OoklaSpeedtest implementation which uses Ookla Speedtest servers under the hood. Ookla and Speedtest are trademarks of Ookla, LLC; this project is not affiliated with or endorsed by Ookla.
See the full example on GitHub.
API Overview
ISpeedTestService is the primary interface you will interact with.
public interface ISpeedTestService
{
public Task<IServer[]> GetServersAsync(CancellationToken cancellationToken = default);
public Task<LatencyTestResult> GetServerLatencyAsync(IServer server, CancellationToken cancellationToken = default);
public Task<LatencyTestResult> GetServerLatencyAsync(IServer server, IProgress<LatencyTestProgress> progress, CancellationToken cancellationToken = default);
public Task<LatencyTestResult> GetServerLatencyAsync(string serverUrl, CancellationToken cancellationToken = default);
public Task<LatencyTestResult> GetServerLatencyAsync(string serverUrl, IProgress<LatencyTestProgress> progress, CancellationToken cancellationToken = default);
public Task<LatencyTestResult> GetFastestServerByLatencyAsync(IServer[] servers, CancellationToken cancellationToken = default);
public Task<LatencyTestResult> GetFastestServerByLatencyAsync(IServer[] servers, IProgress<SpeedTestProgress> progress, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetDownloadSpeedAsync(IServer server, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetDownloadSpeedAsync(IServer server, int downloadSizeMb, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetDownloadSpeedAsync(IServer server, IProgress<SpeedTestProgress> progress, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetDownloadSpeedAsync(IServer server, int downloadSizeMb, IProgress<SpeedTestProgress> progress, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetUploadSpeedAsync(IServer server, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetUploadSpeedAsync(IServer server, int uploadSizeMb, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetUploadSpeedAsync(IServer server, IProgress<SpeedTestProgress> progress, CancellationToken cancellationToken = default);
public Task<SpeedTestResult> GetUploadSpeedAsync(IServer server, int uploadSizeMb, IProgress<SpeedTestProgress> progress, CancellationToken cancellationToken = default);
}
See ISpeedTestService on GitHub.
Testing Your Code
NetPace.Core includes test implementations of ISpeedTestService so you can test your code without making real network calls:
SpeedTestStub- Simple stub returning fixed values with configurable delaysSpeedTestMock- Fully configurable mock with injectable delegate functionsVariableSpeedTester- Returns different speeds on each call (simulates variable network conditions)FaultySpeedTester- Simulates network failures and timeouts (for testing error handling)
See the implementations in NetPace.Core.Clients.Testing and their usage throughout the solution.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 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. |
-
net8.0
- No dependencies.
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 |
|---|---|---|
| 0.23.1 | 106 | 5/13/2026 |
| 0.23.0 | 95 | 5/12/2026 |
| 0.22.3 | 103 | 5/9/2026 |
| 0.22.2 | 102 | 5/9/2026 |
| 0.22.1 | 102 | 5/9/2026 |
| 0.22.0 | 106 | 5/9/2026 |
| 0.21.1 | 117 | 4/16/2026 |
| 0.21.0 | 99 | 4/16/2026 |
| 0.20.0 | 224 | 12/6/2025 |
| 0.19.0 | 380 | 11/30/2025 |
| 0.18.0 | 220 | 11/25/2025 |
| 0.17.0 | 433 | 11/18/2025 |
| 0.16.0 | 195 | 11/15/2025 |
| 0.15.0 | 334 | 11/11/2025 |
| 0.14.0 | 193 | 10/31/2025 |
| 0.13.0 | 215 | 10/22/2025 |
| 0.12.0 | 202 | 10/16/2025 |
| 0.11.0 | 194 | 9/26/2025 |
| 0.10.1 | 223 | 9/24/2025 |
| 0.10.0 | 211 | 9/24/2025 |