跳到正文
豫言包管理
← 全部包

豫言操作系统底层网络 0.1.0

豫言 · 库

豫言操作系统底层接口之网络(可选能力):TCP 的监听、连接与接受;数据收发用句柄包。

豫言操作系统底层网络 0.1.0

状态:草案,可选能力。文言本见文言版。通用规则见[调用约定](../调用约定.汉语.md),状态码表见[底层基础](../底层基础/规范.汉语.md),数据收发与等待见[底层句柄](../底层句柄/规范.汉语.md)。

范围

TCP 的监听、连接与接受。数据收发、等待、关闭都用底层句柄的 读、写、等待、关闭:套接字是可读写的句柄(类别 6)。平台没有网络时,本包所有函数返回 58;裸机目前没有网络栈,属于这种情况。不含 UDP、TLS、域名解析接口与套接字选项(除 设无延迟);HTTP 与 TLS 由 shim 在 TCP 之上用豫言实现。

流程

服务端。 监听 得到监听句柄;用 等待(可读)得知有待接受的连接;接受 得到连接句柄。

客户端。 连接开始 立即返回一个非阻塞的连接句柄(域名解析可能在此期间阻塞,首版接受这一点);用 等待(可写)等连接完成;连接完成 取得结果:状态码 0 表示已连上,否则是失败原因(14 连接被拒、73 超时、……)。

收发。 连接句柄用 读、写:读得 0 表示对端有序关闭;对端重置返回 15;写到已关闭的连接返回 64。关闭写 只关写方向,对端读到文件尾,本端仍可读。关闭 释放句柄。

新接受的连接句柄默认阻塞;需要非阻塞时用 设非阻塞。

函数(网络。接口。豫)

| 函数 | 参数 | 作用 | | --- | --- | --- | | 监听 | 主机址, 主机长, 端口, 队列长, 出 | 在(主机,端口)上监听;主机为空串表示任意地址;监听句柄 4 字节写入出址;地址已用返回 3 | | 连接开始 | 主机址, 主机长, 端口, 出 | 开始连接,非阻塞;主机可以是名字或数字地址;句柄 4 字节写入出址 | | 连接完成 | 句柄 | 取得连接结果,状态码即结果;连接尚未完成返回 6 | | 接受 | 监听句柄, 出 | 新连接句柄 4 字节写入出址;非阻塞且没有待接受的连接返回 6 | | 关闭写 | 句柄 | 半关闭 | | 取本地端口 | 句柄, 出 | 本地端口,4 字节(监听时端口为 0 的场合用它取得实际端口) | | 设无延迟 | 句柄, 开关 | 开关 1 置无延迟(关闭 Nagle),0 取消 |

平台注记

  • 桌面:BSD 套接字(Linux、macOS)与 ws2_32(Windows);IPv4 与 IPv6 由平台决定;监听 的主机串为空时监听双栈或任意地址。
  • 与标准库现有的传输控制协议原语(14 个,豫言_传输控制协议_*)一一可以由本包加底层句柄实现:监听、开始连接、完成连接、接受、读取、写入、等待、获取本地端口、设置无延迟、关闭写入、关闭。

依赖

查看包配置

上传历史

当前上传修订:1 ·

  1. 上传修订 1
    下载 ZIP

包层级

父包:豫言操作系统底层接口

没有子包。