tcp

std.net.tcp

rec Listener

pub rec Listener;

一个绑定并监听连接的 TCP 套接字

fd:底层套接字文件描述符

rec Stream

pub rec Stream;

用于读写的已连接 TCP 套接字

fd:底层套接字文件描述符

fun listen

pub fun listen(ep: ip.Endpoint, backlog: i32) Result[Listener, str];

创建一个绑定到端点的 TCP 监听器

创建套接字、设置 SO_REUSEADDR、绑定到地址和端口,并以给定的 backlog 开始监听。

ep:要绑定的端点 backlog:挂起连接队列的最大长度 ret:监听器,或错误消息

fun accept

pub fun accept(ln: *Listener) Result[Stream, str];

在监听器上接受一个新连接

ln:要接受连接的监听器 ret:已连接的流,或错误消息

fun accept_ep

pub fun accept_ep(ln: *Listener, ep: *ip.Endpoint) Result[Stream, str];

接受新连接并填充远程端点

ln:要接受连接的监听器 ep:指向要用远程地址填充的 Endpoint 的指针 ret:已连接的流,或错误消息

fun connect

pub fun connect(ep: ip.Endpoint) Result[Stream, str];

建立到远程端点的 TCP 连接

ep:要连接的端点 ret:已连接的流,或错误消息

fun stream_read

pub fun stream_read(s: *Stream, buf: *u8, len: usize) i64;

从 TCP 流中读取字节

s:要读取的流 buf:目标缓冲区 len:最大读取字节数 ret:已读取的字节数,对端关闭时返回 0,或者返回负数的错误码(当由 stream_set_read_timeout 设置的读取超时在没有数据到达时到期,则返回 os.EAGAIN

fun stream_set_read_timeout

pub fun stream_set_read_timeout(s: *Stream, ms: u64) Result[bool, str];

将 TCP 流上的阻塞读取限制在指定的超时时间内

在流上设置 SO_RCVTIMEO。当经过 ms 毫秒且没有数据等待时,stream_read 会返回负数的错误码(POSIX 上为 os.EAGAIN)而不是无限期阻塞,从而让调用者能够对连接静默做出反应,并区分超时与对端关闭(0)或真正的 I/O 错误。ms == 0 会恢复无限期阻塞。

s:要限制读取的流 ms:超时时间(以毫秒为单位),或 0 表示无超时 ret:成功时返回 ok,或错误消息

fun stream_write

pub fun stream_write(s: *Stream, buf: *u8, len: usize) i64;

向 TCP 流写入字节

s:要写入的流 buf:源缓冲区 len:要写入的字节数 ret:已写入的字节数,或在出错时返回负数

fun stream_shutdown

pub fun stream_shutdown(s: *Stream, how: i32) i64;

关闭 TCP 流的一部分或全部

s:要关闭的流 howSHUT_RD (0)、SHUT_WR (1) 或 SHUT_RDWR (2)

fun stream_close

pub fun stream_close(s: *Stream);

关闭 TCP 流

s:要关闭的流

fun listener_close

pub fun listener_close(ln: *Listener);

关闭 TCP 监听器

ln:要关闭的监听器