ZmqSharp 0.5.2

dotnet add package ZmqSharp --version 0.5.2
                    
NuGet\Install-Package ZmqSharp -Version 0.5.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ZmqSharp" Version="0.5.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZmqSharp" Version="0.5.2" />
                    
Directory.Packages.props
<PackageReference Include="ZmqSharp" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZmqSharp --version 0.5.2
                    
#r "nuget: ZmqSharp, 0.5.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ZmqSharp@0.5.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ZmqSharp&version=0.5.2
                    
Install as a Cake Addin
#tool nuget:?package=ZmqSharp&version=0.5.2
                    
Install as a Cake Tool

ZmqSharp

CI · NuGet Version · License: Apache-2.0

A fully asynchronous, AOT-compatible .NET implementation of the ZMTP 3.0 protocol (ZeroMQ wire protocol) with libzmq-compatible socket semantics.

  • Value-type messages (ZMessage / ZFrame / ZSegment) with explicit ownership and move semantics — no per-message allocations on the hot path.
  • All 11 libzmq socket types: PAIR, PUSH, PULL, PUB, SUB, REQ, REP, DEALER, ROUTER, XPUB, XSUB, each verified against the NetMQ (libzmq-compatible) implementation over TCP in both directions.
  • TCP and ipc (Unix domain socket) transports with a single string-endpoint facade (tcp://host:port, ipc://path). libzmq supports ipc on Unix only, and NetMQ's ipc:// is a TCP hash rather than a Unix domain socket; ZmqSharp offers true ipc:// Unix domain sockets on every platform, including Windows — a concrete differentiator (0015 section 5.3, 0020 section 7/8).
  • Per-peer bounded queues with configurable full modes (Wait, DropWrite, DropNewest, DropOldest) and mandatory reclamation of dropped messages.
  • Copy-on-write peer snapshots: zero-allocation send and receive hot paths in optimized builds.
  • Full Native AOT: no runtime reflection or dynamic code generation.

Usage

using ZmqSharp;

// PAIR over TCP.
await using var server = new ZPairSocket();
await using var client = new ZPairSocket();
await server.BindAsync("tcp://127.0.0.1:5555");
await client.ConnectAsync("tcp://127.0.0.1:5555");

await client.SendAsync("hello"u8.ToArray());
var message = await server.Messages.ReadAsync();

// PAIR over ipc (Unix domain socket): an absolute path, a relative one
// resolved against the system temp directory, or - on Linux - an abstract
// namespace name (libzmq's ipc://@name convention) that creates no
// filesystem entry.
await using var ipcServer = new ZPairSocket();
await using var ipcClient = new ZPairSocket();
await ipcServer.BindAsync("ipc:///tmp/zmqsharp.sock");
await ipcClient.ConnectAsync("ipc:///tmp/zmqsharp.sock");

REQ/REP (operation-oriented):

await using var rep = new ZRepSocket();
rep.BindRequestHandler((context, token) =>
    rep.SendReplyAsync(context, ZMessage.FromOwned("pong"u8.ToArray()), token));

await using var req = new ZReqSocket();
var reply = await req.RequestAsync(ZMessage.FromOwned("ping"u8.ToArray()));

Design

Design documents live in docs/impl/. The architecture is a transport core (ZSocketBase) composed with per-pattern cores and bound to a semantic delivery seam (IPatternSink); surfaces are thin composition roots constructed directly (new ZPairSocket()), with the queue surface as the default receive path (Messages) and BindAsync/ConnectAsync as the repeatable endpoint surface (0022, 0023).

License

Apache-2.0 — see LICENSE. Third-party notices in NOTICE.

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ZmqSharp:

Package Downloads
ZmqSharp.Security.Curve

Optional CURVE security mechanism (RFC 24 / CurveZMQ) for ZmqSharp, built on the public mechanism seam with a pluggable crypto backend (BouncyCastle).

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.5.2 53 9/14/2026
0.5.1 415 9/7/2026
0.5.0 1,456 8/16/2026
0.4.1 110 8/16/2026
0.4.0 429 8/16/2026
0.3.0 115 8/16/2026
0.2.0 110 8/16/2026
0.1.1 118 8/16/2026
0.1.0 112 8/16/2026