std.net.os
raw socket layer under std.net; for options the higher layers lack
sys_wsa_startup
Section titled “sys_wsa_startup”pub sys_wsa_startup :: fn(version: u16, data: *u8) -> i32os socket seam: Winsock on windows, syscalls on linux (Windows constants translated)
sys_wsa_cleanup
Section titled “sys_wsa_cleanup”pub sys_wsa_cleanup :: fn() -> i32sys_wsa_lasterr
Section titled “sys_wsa_lasterr”pub sys_wsa_lasterr :: fn() -> i32sys_socket
Section titled “sys_socket”pub sys_socket :: fn(af: i32, kind: i32, proto: i32) -> usizesys_closesocket
Section titled “sys_closesocket”pub sys_closesocket :: fn(s: usize) -> i32sys_connect
Section titled “sys_connect”pub sys_connect :: fn(s: usize, name: *const u8, namelen: i32) -> i32sys_bind
Section titled “sys_bind”pub sys_bind :: fn(s: usize, name: *const u8, namelen: i32) -> i32sys_listen
Section titled “sys_listen”pub sys_listen :: fn(s: usize, backlog: i32) -> i32sys_accept
Section titled “sys_accept”pub sys_accept :: fn(s: usize, name: ?*u8, namelen: ?*i32) -> usizesys_send
Section titled “sys_send”pub sys_send :: fn(s: usize, buf: *const u8, len: i32, flags: i32) -> i32sys_recv
Section titled “sys_recv”pub sys_recv :: fn(s: usize, buf: *u8, len: i32, flags: i32) -> i32sys_sendto
Section titled “sys_sendto”pub sys_sendto :: fn(s: usize, buf: *const u8, len: i32, flags: i32, to: *const u8, tolen: i32) -> i32sys_recvfrom
Section titled “sys_recvfrom”pub sys_recvfrom :: fn(s: usize, buf: *u8, len: i32, flags: i32, from: *u8, fromlen: *i32) -> i32sys_setsockopt
Section titled “sys_setsockopt”pub sys_setsockopt :: fn(s: usize, level: i32, opt: i32, val: *const u8, len: i32) -> i32sys_getsockname
Section titled “sys_getsockname”pub sys_getsockname :: fn(s: usize, name: *u8, namelen: *i32) -> i32sys_ioctlsocket
Section titled “sys_ioctlsocket”pub sys_ioctlsocket :: fn(s: usize, cmd: u32, argp: *u32) -> i32sys_shutdown
Section titled “sys_shutdown”pub sys_shutdown :: fn(s: usize, how: i32) -> i32sys_htons
Section titled “sys_htons”pub sys_htons :: fn(x: u16) -> u16host <-> network order for a 16-bit port (x86 little-endian)
sys_ntohs
Section titled “sys_ntohs”pub sys_ntohs :: fn(x: u16) -> u16AF_INET
Section titled “AF_INET”pub AF_INET :: 2protocol constants
SOCK_STREAM
Section titled “SOCK_STREAM”pub SOCK_STREAM :: 1SOCK_DGRAM
Section titled “SOCK_DGRAM”pub SOCK_DGRAM :: 2IPPROTO_TCP
Section titled “IPPROTO_TCP”pub IPPROTO_TCP :: 6IPPROTO_UDP
Section titled “IPPROTO_UDP”pub IPPROTO_UDP :: 17INVALID_SOCKET
Section titled “INVALID_SOCKET”pub INVALID_SOCKET :: 0xFFFFFFFFFFFFFFFFusizeSOCKET_ERROR
Section titled “SOCKET_ERROR”pub SOCKET_ERROR :: -1SOCKADDR_LEN
Section titled “SOCKADDR_LEN”pub SOCKADDR_LEN :: 16SOL_SOCKET
Section titled “SOL_SOCKET”pub SOL_SOCKET :: 0xFFFFsetsockopt levels and options
SO_REUSEADDR
Section titled “SO_REUSEADDR”pub SO_REUSEADDR :: 0x0004SO_BROADCAST
Section titled “SO_BROADCAST”pub SO_BROADCAST :: 0x0020SO_RCVTIMEO
Section titled “SO_RCVTIMEO”pub SO_RCVTIMEO :: 0x1006SO_SNDTIMEO
Section titled “SO_SNDTIMEO”pub SO_SNDTIMEO :: 0x1005TCP_NODELAY
Section titled “TCP_NODELAY”pub TCP_NODELAY :: 0x0001FIONBIO
Section titled “FIONBIO”pub FIONBIO :: 0x8004667Eu32ioctlsocket non-blocking mode; argp != 0 enables
SHUT_RECV
Section titled “SHUT_RECV”pub SHUT_RECV :: 0shutdown() directions
SHUT_SEND
Section titled “SHUT_SEND”pub SHUT_SEND :: 1SHUT_BOTH
Section titled “SHUT_BOTH”pub SHUT_BOTH :: 2WSAEWOULDBLOCK
Section titled “WSAEWOULDBLOCK”pub WSAEWOULDBLOCK :: 10035NetError
Section titled “NetError”pub NetError :: errors { startup_failed, socket_failed, connect_failed, bind_failed, listen_failed, accept_failed, send_failed, recv_failed, option_failed, addr_failed, would_block, closed, unknown_host,}shared by all of std.net; the variant names the failed call, last_error() has the code
startup_failed: WSAStartupsocket_failed: socket()connect_failed: connect()bind_failed: bind()listen_failed: listen()accept_failed: accept()send_failed: send()/sendto()recv_failed: recv()/recvfrom()option_failed: setsockopt()/ioctlsocket()addr_failed: getsockname()would_block: a non-blocking call had no data readyclosed: peer closed the connectionunknown_host: a name with no address (resolve)
RawSockaddr
Section titled “RawSockaddr”pub RawSockaddr :: struct { family: u16, port: u16, addr: u32, zero: u64,}sockaddr_in, 16 bytes: family, port and addr in network order, 8 zero bytes
raw_from
Section titled “raw_from”pub raw_from :: fn(sa: addr::SocketAddr) -> RawSockaddrhost order -> network order
addr_from_raw
Section titled “addr_from_raw”pub addr_from_raw :: fn(r: RawSockaddr) -> addr::SocketAddrnetwork order -> host order
pub init :: fn() -> void ! NetErrormust be called once per process before any socket call
cleanup
Section titled “cleanup”pub cleanup :: fn()optional, at process exit
last_error
Section titled “last_error”pub last_error :: fn() -> i32last Winsock error on this thread
is_would_block
Section titled “is_would_block”pub is_would_block :: fn() -> boollast error was WSAEWOULDBLOCK