The far end of a connected stream. On the accepting side this is the client's address and its ephemeral port; on the connecting side it is the server's.
Io :: #import "Extensions/Io";
main :: () {
Io.io_run(() {
listener, _ := Io.tcp_listen("127.0.0.1:0");
defer Io.close(listener);
address, _ := Io.local_address(listener);
client, connect_error := Io.connect(address);
assert(connect_error == .NONE);
defer Io.close(client);
server, accept_error := Io.accept(listener);
assert(accept_error == .NONE);
defer Io.close(server);
far, _ := Io.peer_address(client);
assert(far.port == address.port); // the client's peer is the listener
near, _ := Io.local_address(client);
seen, _ := Io.peer_address(server);
assert(seen.port == near.port); // the server sees the client's own port
});
}Doesn't run in the browser (skipped on wasm).
peer_address :: (stream: Tcp_Stream) -> (Address, Io_Error)
The far end of a connected stream. On the accepting side this is the client's address and its ephemeral port; on the connecting side it is the server's.
Parameters
- stream: Tcp_Stream
Returns
Io :: #import "Extensions/Io";
main :: () {
Io.io_run(() {
listener, _ := Io.tcp_listen("127.0.0.1:0");
defer Io.close(listener);
address, _ := Io.local_address(listener);
client, connect_error := Io.connect(address);
assert(connect_error == .NONE);
defer Io.close(client);
server, accept_error := Io.accept(listener);
assert(accept_error == .NONE);
defer Io.close(server);
far, _ := Io.peer_address(client);
assert(far.port == address.port); // the client's peer is the listener
near, _ := Io.local_address(client);
seen, _ := Io.peer_address(server);
assert(seen.port == near.port); // the server sees the client's own port
});
}Doesn't run in the browser (skipped on wasm).