Zig

Zig

以下是使用 Zig 与 ZeroMQ 的可用选项

zzmq

GitHub: https://github.com/nine-lives-later/zzmq

安装

按照说明安装 libzmqCZMQ

按照 README 中的说明添加库。

示例

运行服务端

const zzmq = @import("zzmq");

var socket = try zzmq.ZSocket.init(allocator, zzmq.ZSocketType.Pair);
defer socket.deinit();

const port = try socket.bind("tcp://127.0.0.1:!");

// send a message
var frame = try zzmq.ZFrame.init(data);
defer frame.deinit();

try socket.send(&frame, .{});

运行客户端

const zzmq = @import("zzmq");

var socket = try zzmq.ZSocket.init(allocator, zzmq.ZSocketType.Pair);
defer socket.deinit();

const endpoint = try std.fmt.allocPrint(allocator, "tcp://127.0.0.1:{}", .{port});
defer allocator.free(endpoint);

try socket.connect(endpoint);

// receive a message
var frame = try socket.receive();
defer frame.deinit();

const data = try frame.data();

zimq

GitHub: https://github.com/uyha/zimq

安装

  1. 运行以下命令将此项目添加为依赖项

    zig fetch --save git+https://github.com/uyha/zimq.git
    
  2. 在你的 build.zig 中,添加以下内容

    const zimq = b.dependency("zimq", .{
        .target = target,
        .optimize = optimize,
    });
    // Replace `exe` with your actual library or executable
    exe.root_module.addImport("zimq", zimq.module("zimq"));
    

示例

const std = @import("std");
const zimq = @import("zimq");

pub fn main() !void {
    const context: *zimq.Context = try .init();
    defer context.deinit();

    const pull: *zimq.Socket = try .init(context, .pull);
    defer pull.deinit();

    const push: *zimq.Socket = try .init(context, .push);
    defer push.deinit();

    try pull.bind("inproc://#1");
    try push.connect("inproc://#1");

    const message = "hello";
    try push.sendConst(message, message.len, .{});

    var buffer: zimq.Message = .empty();
    _ = try pull.recvMsg(&buffer, .{});

    std.debug.print("{s}\n", .{buffer.slice().?});
}