第 14 章 SOCKET类 的 设 计 和 实 现 14.1 WinSock基 本 知 识 这 里 不 打 算 系 统 地 介 绍 socket 或 者 WinSock 的 知 识 。 首 先 介 绍 WinSock API 函 数 , 讲 解 阻塞 /非 阻 塞 的 概 念 ; 然 后 介 绍 socket 的 使 用 。 14.1.1 WinSock API Socket 接 口 是 网 络 编 程 ( 通 常 是 TCP/IP 协 议 , 也 可 以 是 其 他 协 议 ) 的 API。 最 早 的 Socket接 口 是 Berkeley接 口 , 在 Unxi 操 作 系 统 中 实 现 。 WinSock 也 是 一 个 基 于 Socket 模 型 的 API,在 Microsoft Windows 操 作 系 统 类 中 使 用 。 它 在 Berkeley接 口 函 数 的 基 础 之 上 , 还 增 加 了 基于 消 息 驱 动 机 制 的 Windows 扩 展 函 数 。 Winscok1.1 只 支 持 TCP/IP 网 络 , WinSock2.0 增 加 了对 更 多 协 议 的 支 持 。 这 里 , 讨 论 TCP/IP 网 络 上 的 API。 Socket 接 口 包 括 三 类 函 数 : 第 一 类 是 WinSock API 包 含 的 Berkeley socket 函 数 。 这 类 函 数 分 两 部 分 。 第 一 部 分 是 用 于 网络 I/O 的 函 数 , 如 accept、 Closesocket、 connect、 recv、 recvfrom、 Select、 Send、 Sendto 另 一 部 分 是 不 涉 及 网 络 I/O、 在 本 地 端 完 成 的 函 数 , 如 bind、 getpeername、 getsockname、 getsocketopt、 htonl、 htons、 inet_addr、 inet_nton ioctlsocket、 listen、 ntohl、 ntohs、 setsocketopt、 shutdow、 socket 等 第 二 类 是 检 索 有 关 域 名 、 通 信 服 务 和 协 议 等 Internet 信 息 的 数 据 库 函 数 , 如 gethostbyaddr、 gethostbyname、 gethostname、 getprotolbyname getprotolbynumber、 getserverbyname、 getservbyport。 第 三 类 是Berkekley socket 例 程 的Windows 专 用 的 扩 展 函 数 , 如gethostbyname 对 应 的WSAAsynGetHostByName( 其 他 数 据 库 函 数 除了 gethostname 都有 异步版本 ), select 对 应 的WSAAsynSelect, 判断是 否阻 塞 的 函 ...