Socket module

append_address

procedure · 2 overloadsSource

Appends an IPv4 address to builder as dotted decimal, such as 127.0.0.1.

address is in network byte order, the way it is stored in sockaddr_in.sin_addr: the first octet is the first byte in memory, so loopback is htonl(INADDR_LOOPBACK). The caller releases the builder with free_buffers.

Example
builder: String_Builder;
defer free_buffers(*builder);

append_address(*builder, htonl(INADDR_LOOPBACK));
text := builder_to_string(*builder);
defer free(text);

assert(text == "127.0.0.1");

Doesn't run in the browser (skipped on wasm).

append_address :: (builder: *String_Builder, address: u32)

Appends an IPv4 address to builder as dotted decimal, such as 127.0.0.1.

address is in network byte order, the way it is stored in sockaddr_in.sin_addr: the first octet is the first byte in memory, so loopback is htonl(INADDR_LOOPBACK). The caller releases the builder with free_buffers.

Parameters

builder: *String_Builder
address: u32
Example
builder: String_Builder;
defer free_buffers(*builder);

append_address(*builder, htonl(INADDR_LOOPBACK));
text := builder_to_string(*builder);
defer free(text);

assert(text == "127.0.0.1");

Doesn't run in the browser (skipped on wasm).

append_address :: (builder: *String_Builder, address: [16] u8)

Appends an IPv6 address to builder as eight colon-separated groups of lowercase hex, such as 0:0:0:0:0:0:0:1.

address holds the 16 bytes in network order, as in sockaddr_in6.sin6_addr. Groups have no leading zeros, runs of zero groups are not shortened to ::, and there are no brackets. An IPv4-mapped address prints as plain hex groups, not as dotted decimal.

Parameters

builder: *String_Builder
address: [16] u8
Example
loopback: [16] u8;
loopback[15] = 1;

builder: String_Builder;
defer free_buffers(*builder);

append_address(*builder, loopback);
text := builder_to_string(*builder);
defer free(text);

assert(text == "0:0:0:0:0:0:0:1");

Doesn't run in the browser (skipped on wasm).

See also