Zig
以下是使用 Zig 与 ZeroMQ 的可用选项
zzmq
GitHub: https://github.com/nine-lives-later/zzmq
安装
按照 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
安装
-
运行以下命令将此项目添加为依赖项
zig fetch --save git+https://github.com/uyha/zimq.git
-
在你的
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().?});
}