内容简介
第1章 TCP/IP协议基础
1.1什么是TCP/IP
1.2 TCP/IP协议的分层结构
1.3应用层
1.3.1 DNS
1.3.2端口的概念
1.4传输层
1.4.1 TCP协议
1.4.2 UDP协议
1.5网络层
1.5.1 IP协议
1.5.2 ARP协议
1.5.3 RARP协议
1.5.4 ICMP协议
1.6数据链路层
1.6.1数据链路层的基本概念
1.6.2数据链路层的主要功能
1.7一些容易混淆的术语
1.7.1 MTU
1.7.2 IP分组的分片问题
1.7.3数据段
1.7.4数据报
1.7.5数据包
1.7.6数据帧
1.7.7比特流
第2章 本机网络信息编程
2.1获取本地计算机的名称和IP
2.1.1 gethostname函数
2.1.2 gethostbyname函数
2.1.3 inet_ntoa函数
2.2获取本机子网IP地址和子网掩码
2.3获取本机物理网卡地址信息
2.4获取本机所有网卡(包括虚拟网卡)的列表和信息
2.5获取本地计算机的IP协议统计数据
2.6获取本机的DNS地址
2.7获取本机上的TCP统计数据
2.8获取本机上的UDP统计数据
2.9获取本机上支持的网络协议信息
2.10获取本地计算机的域名
第3章 多线程编程
3.1多线程编程的基本概念
3.1.1为何要用多线程
3.1.2操作系统和多线程
3.1.3进程和线程
3.1.4线程调度
3.1.5线程函数
3.1.6线程对象和句柄
3.1.7线程对象的安全属性
3.1.8线程标识
3.1.9多线程编程的3种库
3.2利用Win32 API函数进行多线程开发
3.2.1线程的创建
3.2.2线程的结束
3.2.3线程和MFC控件交互
3.2.4线程的暂停和恢复
3.2.5消息线程和窗口线程
3.2.6线程同步
3.3 CRT库中的多线程函数
3.4 MFC多线程开发
3.4.1线程的创建
3.4.2线程同步
第4章 套接字基础
4.1套接字基本概念
4.1.1网络程序的架构
4.1.2套接字的类型
4.2套接字地址
4.2.1通用socket地址
4.2.2专用socket地址
4.2.3 IP地址的转换
4.2.4主机字节序和网络字节序
4.2.5 I/O工作模式和I/O模型
第5章 TCP套接字编程
5.1 TCP套接字编程的基本步骤
5.2协议簇和地址簇
5.3 socket地址
5.3.1通用socket地址
5.3.2专用socket地址
5.3.3 IP地址的转换
5.3.4获取套接字地址
5.4 TCP套接字编程的相关函数
5.4.1 WSAStartup函数
5.4.2 socket/WSASocket函数
5.4.3 bind函数
5.4.4 listen函数
5.4.5 accept/WSAAccept函数
5.4.6 connect/WSAConnect函数
5.4.7 send/ WSASend函数
5.4.8 recv/ WSARecv函数
5.4.9 closesocket函数
5.4.10 inet_addr函数
5.4.11 inet_ntoa函数
5.4.12 htonl函数
5.4.13 htons函数
5.4.14 WSAAsyncSelect函数
5.4.15 WSACleanup函数
5.5简单的TCP套接字编程
5.6深入理解TCP编程
5.6.1数据发送和接收涉及的缓冲区
5.6.2 TCP数据传输的特点
5.6.3数据发送的6种情形
5.6.4数据接收时碰到的情形
5.6.5一次请求响应的数据接收
5.6.6多次请求响应的数据接收
5.7 I/O控制命令
5.8套接字选项
5.8.1基本概念
5.8.2选项的级别
5.8.3获取套接字选项
5.8.4设置套接字选项
第6章 UDP套接字编程
6.1 UDP套接字编程的基本步骤
6.2 UDP套接字编程的相关函数
6.2.1 sendto/WSASendto函数
6.2.2 recvfrom/WSARecvfrom函数
6.3实战UDP套接字
6.4 UDP丢包及无序问题
第7章 原始套接字编程
7.1原始套接字概述
7.2原始套接字的强大功能
7.3原始套接字的基本编程步骤
7.3.1创建原始套接字函数socket
7.3.2接收函数recvfrom
7.3.3发送函数sendto
7.4常规编程示例
7.5抓取所有IP数据包
7.6抓取所有IP数据包
第8章 MFC套接字编程
8.1概述
8.2类CAsyncSocket
8.2.1基本概念
8.2.2成员函数
8.2.3基本用法
8.2.4网络事件处理
8.3类CSocket
8.3.1基本概念
8.3.2成员函数
8.3.3基本用法
8.4基于CAsyncSocket的网络五子棋
8.4.1概述
8.4.2五子棋简介
8.4.3软件总体架构
8.4.4棋盘类——CTable
8.4.5游戏模式类——CGame
8.4.6消息机制
8.4.7主要算法
第9章 简单的网络服务器设计
9.1循环服务器
9.1.1 UDP循环服务器
9.1.2 TCP循环服务器
9.2多线程并发服务器
9.3 I/O复用服务器
第10章 基于I/O模型的网络开发
10.1同步和异步
10.1.1同步
10.1.2异步
10.2阻塞和非阻塞
10.2.1阻塞
10.2.2非阻塞
10.3同步/异步和阻塞/非阻塞的关系
10.4 I/O和网络I/O
10.5 I/O模式
10.5.1阻塞模式
10.5.2非阻塞模式
10.6 I/O模型
10.7选择模型
10.7.1基本概念
10.7.2 select函数
10.7.3实战select模型
10.8异步选择模型WSAAsyncSelect
10.8.1基本概念
10.8.2 WSAAsyncSelect函数
10.8.3实战WSAAsyncSelect模型
10.9事件选择模型
10.9.1基本概念
10.9.2 WSAEventSelect函数
10.9.3实战WSAEventSelect模型
10.10重叠I/O模型
10.10.1基本概念
10.10.2创建重叠I/O模型下的套接字
10.10.3获取重叠I/O操作完成结果
10.10.4基于事件通知(有64个socket的限制)
10.10.5基于完成例程
10.11完成端口
10.11.1基本概念
10.11.2完成端口能干什么
10.11.3完成端口的优势
10.11.4完成端口编程的基本流程
10.11.5相关API
第11章 网络性能工具iperf的使用
11.1 iperf概述
11.2 iperf的特点
11.3 iperf的工作原理
11.4 iperf的主要功能
11.5 iperf中Linux下的使用
11.5.1在Linux下安装iperf
11.5.2 iperf的简单使用
11.6 iperf中Windows下的使用
11.6.1命令行版本
11.6.2图形化版本
第12章 Winlnet开发Internet客户端
12.1什么是WinInet
12.2认识WinInet API函数
12.2.1通用WinInet API函数
12.2.2 WinInet HTTP函数
12.2.3 WinInet FTP函数
12.2.4 WinInet Gopher函数
12.2.5读取HTTP网页数据
12.3认识MFC WinInet类库
12.3.1访问HTTP服务器的一般流程
12.3.2访问FTP服务器的流程
12.4 FTP开发
12.4.1 FTP概述
12.4.2 FTP的工作原理
12.4.3 FTP的传输方式
12.4.4 FTP的工作方式
12.4.5 FTP命令
12.4.6 FTP应答码
12.4.7开发FTP客户端
第13章 HTTP网络编程
13.1 HTTP简介
13.2 HTTP的工作原理
13.3 HTTP的特点
13.4 HTTP的消息结构
13.5客户端请求消息
13.6服务器响应消息
13.7 HTTP状态码
13.8 HTTP状态码分类
13.9实现HTTP服务器
13.9.1概述
13.9.2界面设计
13.9.3类CWebServerApp
13.9.4类CWebServerDlg
13.9.5类CLog
13.9.6类CGenericServer
13.9.7类CHTTPServer
13.9.8运行结果
第14章 C++ Web编程
14.1 CGI程序的工作方式
14.2架设Web服务器Apache
14.3 ActiveX、OLE和COM
14.4什么是OCX
14.5 ActiveX
14.6 ActiveX控件
14.6.1生成和注册ActiveX控件
14.6.2在网页html中使用ActiveX控件
14.6.3在MFC应用程序中使用ActiveX控件
14.6.4在测试容器中使用(测试)ActiveX控件
14.6.5在网页的JavaScript中使用控件
14.7为ActiveX控件添加对话框
14.8为ActiveX控件添加事件
14.8.1常用事件
14.8.2自定义事件
14.9为ActiveX控件添加方法
14.9.1常用方法
14.9.2自定义方法
第15章 中国象棋网上对弈系统
15.1电脑游戏概述
15.2系统概述
15.3系统运行结果
15.4系统构成
15.5数据结构
15.5.1棋盘
15.5.2棋子信息数组
15.5.3变量与函数
15.6图像绘制
15.6.1主窗口
15.6.2棋盘的绘制
15.6.3棋子的绘制及初始化
15.6.4动态显示
15.6.5回看功能
15.7规则设置
15.7.1棋子规则
15.7.2规则算法
15.8网络通信
15.8.1 CCOM类
15.8.2数据代码
15.8.3数据更新
15.8.4聊天功能
15.9棋子操作
15.9.1获取点击
15.9.2走棋判断
15.9.3光标变化
15.10主框架重要函数解析
15.10.1 WinMain函数
15.10.2 InitInstance函数
15.11通信函数解析
15.11.1 Listen函数
15.11.2 ListenThread函数
15.11.3 SendMsg函数
15.12象棋业务逻辑重要函数解析
15.12.1 Graphics函数
15.12.2 Draw函数
15.12.3 InitChessBoard函数
15.12.4 ChessRule函数
第16章 WinPcap编程
16.1什么是WinPcap
16.2 WinPcap的历史
16.3 WinPcap的功能
16.4 WinPcap的应用领域
16.5 WinPcap不能做什么
16.6 WinPcap组成结构
16.7 WinPcap内核层NPF
16.8 WinPcap的数据结构和主要功能函数
16.8.1网络接口的地址
16.8.2数据包头的格式
16.8.3 pcap文件格式
16.8.4获得网卡列表pcap_findalldevs
16.8.5释放空间函数pcap_freealldevs
16.8.6打开网络设备函数pcap_open_live
16.8.7捕获数据包pcap_loop
16.8.8捕获数据包pcap_dispatch
16.8.9捕获数据包pcap_next_ex
16.9搭建WinPcap的开发环境
16.9.1 WinPcap通信库的安装
16.9.2准备开发包
16.9.3第一个WinPcap应用程序
16.9.4捕获访问Web站点的网络包
第17章 ICE网络编程
17.1 ICE简介
17.2 ICE的优势
17.3 ICE的工作原理
17.4 ICE调用模式
17.5客户端与服务器端的结构
17.6 ICE的下载、安装和配置
17.6.1下载ICE
17.6.2安装ICE
17.6.3安装第三方库
17.6.4配置ICE环境变量
17.7 ICE的使用
第18章 IPv6网络编程
18.1 IPv4的现状和不足
18.1.1地址空间、地址方案与选路的问题
18.1.2网络管理与配置的问题
18.1.3服务类型问题
18.1.4 IP选项的问题
18.1.5 IPv4安全性问题
18.2是增加补丁还是彻底升级改进
18.3 IPv6的概念
18.4 IPv6的发展历史
18.5 IPv6的特点
18.6 IPv6地址
18.6.1 IPv6地址表示方法
18.6.2 IPv6前缀
18.6.3 IPv6地址的类型
18.7 IPv6数据报格式
18.8基于IPv6的Socket网络编程技术
18.8.1地址表示
18.8.2 IPv6的Socket API函数
18.8.3 IPv6下编写应用程序的注意点
18.8.4实战IPv6