SetNet.Ping
1.2.0
dotnet add package SetNet.Ping --version 1.2.0
NuGet\Install-Package SetNet.Ping -Version 1.2.0
<PackageReference Include="SetNet.Ping" Version="1.2.0" />
<PackageVersion Include="SetNet.Ping" Version="1.2.0" />
<PackageReference Include="SetNet.Ping" />
paket add SetNet.Ping --version 1.2.0
#r "nuget: SetNet.Ping, 1.2.0"
#:package SetNet.Ping@1.2.0
#addin nuget:?package=SetNet.Ping&version=1.2.0
#tool nuget:?package=SetNet.Ping&version=1.2.0
SetNet.Ping
Round-trip latency (ping) measurement for SetNet. Read any player's ping to the server at any moment, and let a client measure its own RTT.
Server — every player's ping
using SetNet.Ping;
var ping = server.UsePing(new PingOptions { IntervalMs = 1000 }); // pings each peer once a second
PingRuntime.Enable();
// …anywhere, any time:
double ms = ping.Of(peer); // smoothed RTT in ms (-1 until measured)
double last = ping.LastOf(peer); // most recent sample
ping.Updated += (peer, rtt) => { /* e.g. show it on a scoreboard */ };
Client — echo + own ping
var pc = client.UsePing(); // answers the server's pings (required for the server to measure you)
await pc.MeasureAsync(); // measure my own RTT to the server
Console.WriteLine($"my ping: {pc.Last:F0} ms");
// or auto: client.UsePing(new PingOptions { ClientAutoPingMs = 1000 }); → pc.Updated / pc.Smoothed
How it works
Rides the unified protocol on Channels.Ping. The initiator sends a Ping carrying its own monotonic Stopwatch timestamp; the other side echoes it back as Pong; the initiator computes RTT = now − stamp. Because the timestamp round-trips on the initiator's clock, no clock sync is needed. Both directions use the same pair:
- The server pings each peer on a timer → the client echoes →
ping.Of(peer). - The client pings the server → the server echoes →
pc.Last.
PingOptions: IntervalMs (server), Smoothing (EWMA α, default 0.2), ClientAutoPingMs. Both ends must call UsePing() (the client's install answers the server's pings). Depends only on SetNet.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | 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.1
- SetNet (>= 1.2.0)
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 |
|---|---|---|
| 1.2.0 | 93 | 8/5/2026 |