目录

第一章 简介 11

  1. 什么是WINDOWS SOCKETS 规范? 11

  2. BEKELEY 套接口 12

  3. [MICROSOFT WINDOWS 和针对WINDOWS 的扩展

    12](#microsoft-windows-和针对-windows-的扩展)

  4. 这份规范的地位 13

  5. 曾经作过的修改 13

    1. Windows Sockets 1.0 13

    2. Windows Sockets 1.1 13

第二章 使用 WINDOWS SOCKETS 1.1 编程 15

  1. WINDOWS SOCKETS 协议栈安装检查 15

  2. 套接口 15

    1. 基本概念 15

    2. 客户机/服务器模型 16

    3. 带外数据 17

2.2.4 广播 18

  1. 字节顺序 18

  2. 套接口属性选项 19

  3. 数据库文件 20

  4. 与BERKELEY 套接口的不同 20

    1. 套接口数据类型和错误数值 21

    2. select()函数和FD_*宏 21

    3. 错误代码-errno,h_errno,WSAGetLastError() 22

2.6.4 指针 23

  1. 重命名的函数 23

    1. close()和 closesocket() 23

    2. ioctl()和 iooctlsocket() 23

  2. 阻塞例程和EINPROGRESS 宏 23

  3. [Windows Sockets 支持的最大套接口数目

    24](#windows-sockets-支持的最大套接口数目)

  4. 头文件 24

  5. API 调用失败时的返回值 24

  6. 原始套接口 25

  1. [在多线程WINDOWS 版本中的WINDOWS SOCKETS

    25](#在多线程-windows-版本中的-windows-sockets)

第三章 WINDOWS SOCKETS 1.1 应用实例 26

  1. 套接口网络编程原理 26

  2. WINDOWS SOCKETS 编程原理 28

  3. [WINDOWS SOCKETS 与UNIX 套接口编程实例

    29](#windows-sockets-与-unix-套接口编程实例)

    1. SERVER 介绍 29

    2. CLIENT 介绍 30

    3. 源程序清单 31

  4. [另一个精巧的应用程序实例-WSHOUT

    39](#另一个精巧的应用程序实例wshout)

    1. 源程序目录 39

    2. 程序逻辑结构 40

    3. 源程序清单及注释 40

      1. wshout.c 清单 40

      2. wshout.h 清单 56

      3. wshout.rc 清单 59

      4. ushout.c 清单 64

      5. ulisten.c 清单 67

      6. tshout.c 清单 71

      7. tlisten.c 清单 74

      8. errno.c 清单 79

      9. resolve.c 清单 80

第四章 WINDOWS SOCKET 1.1 库函数概览 84

  1. 套接口函数 84

    1. 阻塞/非阻塞和数据易失性 85
  2. 数据库函数 86

  3. 针对MICROSOFT WINDOWS 的扩展函数 87

    1. 异步选择机制 88

    2. 异步支持例程 89

    3. 阻塞钩子函数方法 89

    4. 错误处理 89

    5. 通过中介DLL 调用Windows Sockets DLL 90

    6. [Windows Sockets 实现内部对消息的使用

      90](#windows-sockets-实现内部对消息的使用)

    7. 私有的API 接口 91

第五章 套接口库函数参考 92

  1. WINDOWS SOCKET 1.1 库函数参考 92

    1. accept() 92

5.1.2 bind() 93

  1. closesocket() 95

  2. connect() 97

  3. getpeername() 98

  4. getsockname() 99

  5. getsockopt() 100

5.1.8 htonl() 102

5.1.9 htons() 103

  1. inet_addr() 103

  2. inet_ntoa() 104

  3. ioctlsocket() 105

  4. listen() 107

5.1.14 ntohl() 108

5.1.15 ntohs() 108

5.1.16 recv() 109

  1. recvfrom() 111

  2. select() 113

5.1.19 send() 115

  1. sendto() 116

  2. setsockopt() 118

  3. shutdown() 121

  4. socket() 122

  1. 数据库函数 124

    1. gethostbyaddr() 124

    2. gethostbyname() 126

    3. gethostname() 127

    4. getprotobyname() 128

    5. getprotobynumber() 129

    6. getservbyname() 130

    7. getservbyport() 131

  2. WINDOWS 扩展函数 132

    1. WSAAsyncGetHostByAddr() 132

    2. WSAAsyncGetHostByName() 135

    3. WSAAsyncGetProtoByName() 137

    4. WSAAsyncGetProtoByNumber() 139

    5. WSAAsyncGetServByName() 141

    6. WSAAsyncGetServByPort() 144

    7. WSAAsyncSelect() 146

    8. WSACancelAsyncRequest() 151

    9. WSACancelBlockingCall() 152

    10. WSACleanup() 154

    11. WSAGetLastError() 155

    12. WSAIsBlocking() 156

    13. WSASetBlockingHook() 157

    14. WSASetLastError() 159

    15. WSAStartup() 159

    16. WSAUnhookBlockingHook() 164

第六章 WINDOWS SOCKET 2 的扩展特性 166

  1. 同时使用多个传输协议 166

  2. 与WINDOWS SOCKET 1.1 应用程序的向后兼容性 167

    1. 源码的兼容性 167

    2. 二进制兼容性 167

  3. 在WINDOWS SOCKETS 中注册传输协议 168

    1. 使用多个协议 169

    2. [select()函数应用中关于多个服务提供者的限制

      169](#select函数应用中关于多个服务提供者的限制)

  4. 协议无关的名字解析 170

  5. 重叠I/O 和事件对象 170

    1. 事件对象 171

    2. 接收操作完成指示 171

      1. 阻塞并且等待完成指示。 171

      2. 检查完成指示 172

      3. 使用套接口 I/O 操作完成例程 172

    3. WSAOVERLAPPED 的细节 172

  6. 使用事件对象异步通知 173

  7. 服务的质量(QOS) 173

  8. 套接口组 175

  9. 共享套接口 175

  10. 连接建立和拆除的高级函数 176

  11. 扩展的字节顺序转换例程 177

  12. 分散/聚集方式I/O 177

  13. 协议无关的多点通讯 177

  14. 新增套接口选项一览 178

  15. 新增套接口IOCTL 操作代码 178

  16. 新增函数一览 180

第七章 WINDOWS SOCKETS 2 扩展库函数简要参考 182

  1. WSAACCEPT() 182

  2. WSACLOSEEVENT() 183

  3. WSACONNECT() 184

  4. WSACREATEEVENT() 186

  5. WSADUPLICATESOCKET() 186

  6. WSAENUMNETWORKEVENTS() 187

  7. WSAENUMPROTOCOLS() 188

  8. WSAEVENTSELECT() 189

  9. WSAGETOVERLAPPEDRESULT() 191

  10. WSAGETQOSBYNAME() 192

  11. WSAHTONL() 192

  12. WSAHTONS() 193

  13. WSAIOCTL() 194

  14. WSAJOINLEAF() 195

  15. WSANTOHL() 196

  16. WSANTOHS() 197

  17. WSARECV() 198

  18. WSARECVDISCONNECT() 199

  19. WSARECVFROM() 200

  20. WSARESETEVENT() 202

  21. WSASEND() 202

  22. WSASENDDISCONNECT() 204

  23. WSASENDTO() 205

  24. WSASETEVENT() 207

  25. WSASOCKET() 207

  26. WSAWAITFORMULTIPLEEVENTS() 209

附录 A 错误代码 211

附录 B WINDOWS SOCKETS 头文件 215

附录B.1 WINDOWS SOCKETS 1.1 头文件 215

附录B.2 WINDOWS SOCKETS 2 头文件 239

附录B.3 WINSOCK.DEF 文件 276

附录 C 参考文献 279