pub rec Listener;
一个绑定并监听连接的 TCP 套接字
fd:底层套接字文件描述符
pub rec Stream;
用于读写的已连接 TCP 套接字
fd:底层套接字文件描述符
pub fun listen(ep: ip.Endpoint, backlog: i32) Result[Listener, str];
创建一个绑定到端点的 TCP 监听器
创建套接字、设置 SO_REUSEADDR、绑定到地址和端口,并以给定的 backlog 开始监听。
ep:要绑定的端点 backlog:挂起连接队列的最大长度 ret:监听器,或错误消息
pub fun accept(ln: *Listener) Result[Stream, str];
在监听器上接受一个新连接
ln:要接受连接的监听器 ret:已连接的流,或错误消息
pub fun accept_ep(ln: *Listener, ep: *ip.Endpoint) Result[Stream, str];
接受新连接并填充远程端点
ln:要接受连接的监听器 ep:指向要用远程地址填充的 Endpoint 的指针 ret:已连接的流,或错误消息
pub fun connect(ep: ip.Endpoint) Result[Stream, str];
建立到远程端点的 TCP 连接
ep:要连接的端点 ret:已连接的流,或错误消息
pub fun stream_read(s: *Stream, buf: *u8, len: usize) i64;
从 TCP 流中读取字节
s:要读取的流 buf:目标缓冲区 len:最大读取字节数 ret:已读取的字节数,对端关闭时返回 0,或者返回负数的错误码(当由 stream_set_read_timeout 设置的读取超时在没有数据到达时到期,则返回 os.EAGAIN)
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,或错误消息
pub fun stream_write(s: *Stream, buf: *u8, len: usize) i64;
向 TCP 流写入字节
s:要写入的流 buf:源缓冲区 len:要写入的字节数 ret:已写入的字节数,或在出错时返回负数
pub fun stream_shutdown(s: *Stream, how: i32) i64;
关闭 TCP 流的一部分或全部
s:要关闭的流 how:SHUT_RD (0)、SHUT_WR (1) 或 SHUT_RDWR (2)
pub fun stream_close(s: *Stream);
关闭 TCP 流
s:要关闭的流
pub fun listener_close(ln: *Listener);
关闭 TCP 监听器
ln:要关闭的监听器