Skip to content

Net

Module: std.net
Source: std/net.zn

Usage Example

use std.net;
fn main() {
// bind listener
let addr = SocketAddr.loopback(0);
let listener = TcpListener.bind(&addr).unwrap();
let local = listener.local_addr().unwrap();
// connect client and accept server side
let client = TcpStream.connect(&local).unwrap();
let server = listener.accept().unwrap();
// send and read
client.write_all("ping").unwrap();
let buf = String.new();
server.read_exact(&buf, 4).unwrap();
@println("got: {}", buf);
}

SocketAddr

IPv4 socket address. The ip holds octets in host order


Fields:

_ip: u32,
_port: u16,

Constructors:

pub fn new(ip: u32, port: u16) Self;
pub fn loopback(port: u16) Self;
pub fn any(port: u16) Self;
pub fn from_str(s: []const char) Result[Self, IoError];

Getters:

pub fn ip(*const self) u32;
pub fn port(*const self) u16;

Interfaces:

  • core.ops : Copy
  • core.io : Display

TcpListener

Listening TCP socket


Fields:

fd: c_int,
handle: *void,

Constructors:

pub fn bind(addr: *const SocketAddr) Result[Self, IoError];

Getters:

pub fn accept(*const self) Result[TcpStream, IoError];
pub fn local_addr(*const self) Result[SocketAddr, IoError];

Interfaces:

  • core.ops : Drop

TcpStream

Connected TCP stream


Fields:

fd: c_int,
handle: *void,

Constructors:

pub fn connect(addr: *const SocketAddr) Result[Self, IoError];

Getters:

pub fn local_addr(*const self) Result[SocketAddr, IoError];
pub fn peer_addr(*const self) Result[SocketAddr, IoError];

Mutations:

pub fn read(*self, buf: *String) Result[usize, IoError];
pub fn read_exact(*self, buf: *String, n: usize) Result[usize, IoError];
pub fn read_to_string(*self, buf: *String) Result[usize, IoError];
pub fn write(*self, buf: []const char) Result[usize, IoError];
pub fn write_all(*self, buf: []const char) Result[usize, IoError];
pub fn shutdown(*const self) Result[void, IoError];

Interfaces:

  • core.ops : Drop

UdpSocket

Connected or connectionless UDP socket


Fields:

fd: c_int,
handle: *void,

Constructors:

pub fn bind(addr: *const SocketAddr) Result[Self, IoError];

Getters:

pub fn send_to(*const self, buf: []const char, addr: *const SocketAddr) Result[usize, IoError];
pub fn recv_from(*self, buf: *String) Result[SocketAddr, IoError];
pub fn local_addr(*const self) Result[SocketAddr, IoError];

Interfaces:

  • core.ops : Drop