豫言操作系统底层网络〇点一点〇
状:草案,可选之能。汉语本见汉语版。通用之规,见[调用约定](../调用约定.文言.md);状态之码表,见[底层基础](../底层基础/规范.文言.md);数据之收发与等待,见[底层句柄](../底层句柄/规范.文言.md)。
范围
TCP 之监听、连接与接受。数据之收发、等待、关闭,皆用底层句柄之 读、写、等待、关闭:套接字乃可读写之柄(类别 6)。平台无网络,则本包诸函数皆返 58;裸机今无网络栈,即此情形。不含 UDP、TLS、域名解析之接口与套接字之选项(唯 设无延迟 除外);HTTP 与 TLS,由垫层于 TCP 之上以豫言为之。
流程
服务端。 监听 得监听之柄;以 等待(可读)知有待接之连;接受 得连接之柄。
客户端。 连接开始 立返一非阻塞之连接柄(域名解析或于其间阻塞,首版容之);以 等待(可写)候其连成;连接完成 取其果:状态之码零,谓已连;否则为败之因(14 连被拒、73 超时、……)。
收发。 连接之柄用 读、写:读得零,谓对端有序而闭;对端重置则返 15;书于已闭之连接则返 64。关闭写 唯闭写之向,对端读至文件尾,本端仍可读。关闭 释其柄。
新所接之连接柄,默认阻塞;须非阻塞者,以 设非阻塞 置之。
函数(网络。接口。豫)
| 函数 | 参 | 用 | | --- | --- | --- | | 监听 | 主机址, 主机长, 端口, 队列长, 出 | 于(主机,端口)监听;主机为空串谓任意之址;监听之柄四字节书于出址;址已用则返 3 | | 连接开始 | 主机址, 主机长, 端口, 出 | 始连,非阻塞;主机可为名或数字之址;柄四字节书于出址 | | 连接完成 | 句柄 | 取连接之果,状态之码即其果;连尚未成则返 6 | | 接受 | 监听句柄, 出 | 新连接之柄四字节书于出址;非阻塞而无待接之连则返 6 | | 关闭写 | 句柄 | 半闭 | | 取本地端口 | 句柄, 出 | 本地端口,四字节(监听而端口为零者,以此取其实端口) | | 设无延迟 | 句柄, 开关 | 开关 1 置无延迟(闭 Nagle),0 除之 |
平台之注
- 桌面:BSD 套接字(Linux、macOS)与 ws2_32(Windows);IPv4 与 IPv6,平台裁之;
监听之主机串为空,则监听双栈或任意之址。 - 与标准库今有之传输控制协议原语(十四,
豫言_传输控制协议_*),皆可由本包加底层句柄行之:监听、开始连接、完成连接、接受、读取、写入、等待、获取本地端口、设置无延迟、关闭写入、关闭。