Zig Cookbook

介绍

TCP 客户端

在此示例中,我们要创建一个 TCP 客户端来连接上一节中的服务器。 您可以使用 zig build run-04-02 -- <port> 运行它。

const std = @import("std");
const net = std.Io.net;
const print = std.debug.print;

pub fn main(init: std.process.Init) !void {
    const io = init.io;

    var args = init.minimal.args.iterate();
    // The first (0 index) argument is the path to the program.
    _ = args.skip();
    const port_value = args.next() orelse {
        print("expect port as command line argument\n", .{});
        return error.NoPort;
    };
    const port = try std.fmt.parseInt(u16, port_value, 10);

    const peer = try net.IpAddress.parseIp4("127.0.0.1", port);
    // Connect to peer
    const stream = try peer.connect(io, .{ .mode = .stream });
    defer stream.close(io);
    print("Connecting to {f}\n", .{peer});

    // Sending data to peer
    const data = "hello zig";
    var buffer: [1024]u8 = undefined;
    var writer = stream.writer(io, buffer[0..]);
    try writer.interface.writeAll(data);
    try writer.interface.flush();
    print("Sending '{s}' to peer, total written: {d} bytes\n", .{ data, data.len });
}

默认情况下,程序使用 IPv4 连接。如果您想要 IPv6,请使用 ::1 代替 127.0.0.1,将 net.IpAddress.parseIp4 替换为 net.IpAddress.parseIp6

上一示例:监听未使用的 TCP/IP 端口
下一示例:UDP 回显