const std = @import("std"); const net = std.net; // https://ziglang.org/documentation/master/std/#std.net // TODO read from the command line const qtype = 1; const msg: u32 = 42; const s = "toto"; const debug = false; pub fn main() !void { const server_address = try net.Address.resolveIp("127.0.0.1", 9999); const conn = try net.tcpConnectToAddress(server_address); defer conn.close(); if (debug) { std.debug.print("Connected\n", .{}); } const encoded_qtype: [1]u8 = .{qtype}; const s_length: [1]u8 = .{s.len}; const raw_bytes = switch (qtype) { 1 => encoded_qtype ++ s_length ++ @as([s.len]u8, s.*), 2 => encoded_qtype ++ @as([4]u8, @bitCast(msg)), 3 => encoded_qtype, else => error.wrongQtype, }; var buf: [1]u8 = undefined; var result = try conn.write(&raw_bytes); if (debug) { std.debug.print("Written\n", .{}); } if (result != raw_bytes.len) { return error.wrongWrite; } result = try conn.read(&buf); if (debug) { std.debug.print("Read\n", .{}); } if (result != 1) { return error.wrongRead; } std.debug.print("The answer is {any}\n", .{buf}); }