Winsock 大部分函数都是从 BSD socket 来的,不过 Winsock 做了不少扩展,其中有不少相当有趣。

1: 异步 Socket: 这个是 Winsock 的最大亮点,不过很多人都知道,就没有那么有趣了
2: ConnectEx 和 AcceptEx:这俩函数看起来是个批处理操作,比如 AcceptEx 就等于 accept + 一次 recv,这看起来很没道理,有必要这么兴师动众吗?其实不然,在高负载情况下面,accept 加一次 recv 就多了一次无谓的进程切换。可能会造成响应时间大大增加,特别是像 HTTP 这样初始发送数据通常非常少的协议,很适合用这一对。
3: TransmitFile 和 TransmitPackets:这个基本可以认为是 sendfile 和 writev 的变种,不过 TransmitPackets 比 writev 高级在于他也支持像 TransmitFile/sendfile 那样的句柄作为输入。
4: WSARecvEx :这个比较的没有特点,不过这个函数支持收取半截的 UDP Data , 用 recv 直接收取的时侯,如果 UDP Data 比 buffer 大,就会失败一次,得准备更大 buffer 来接收,用 Ex 版本好处是可以少一次上下文切换。
5: 对于传统的 BSD socket, Winsock 也进行了一些扩展,这个下次再补上

-=待续=-