第l章 概述 1
1.1 软件功能介绍 2
1.2 软件模块划分 3
1.2.1 软件功能深入分析 3
1.2.2 即时通信流程分析 4
1.2.3 模块划分 5
1.3 开发环境介绍 6
1.4 一个简单C项目构建 7
1.4.1 项目工程创建 7
1.4.2 C语言源程序组成 12
1.4.3 项目工程编译 13
1.4.4 执行结果(如何查看执行结果) 14
项目练习 15
第2章 用户的登录认证 16
2.1 设计目的 16
2.2 功能描述 17
2.3 C语言知识点 18
2.3.1 变量和计算表达式 18
2.3.2 代码风格和规范 22
2.3.3 常量的定义 23
2.3.4 if控制语句 26
2.3.5 switch控制语句 33
2.3.6 printf函数 38
2.3.7 scanf函数 40
2.3.8 strcmp函数 44
2.4 程序实现 46
2.4.1 程序的输入和输出 46
2.4.2 数据结构 47
2.4.3 源代码分析 47
2.4.4 程序测试和执行结果 51
项目练习 51
第3章 信息的加密和解密 52
3.1 设计目的 52
3.2 功能描述 53
3.3 C语言知识点 54
3.3.1 字符常量和转义字符 54
3.3.2 for循环 56
3.3.3 字符变量的表示范围 61
3.3.4 字符的ASCⅡ表示方式 63
3.3.5 字符串常量 68
3.3.6 字符串数组的定义和初始化 69
3.3.7 strupr函数 73
3.3.8 strlen和strcmp函数 74
3.4 程序实现 77
3.4.1 程序的输入和输出 78
3.4.2 数据结构和算法 78
3.4.3 源代码分析 78
3.4.4 程序测试和执行结果 84
项目练习 84
第4章 好友管理模块 86
4.1 设计目的 86
4.2 功能描述 87
4.3 C语言相关知识点 88
4.3.1 指针和地址 88
4.3.2 指针和数组 94
4.3.3 结构 98
4.3.4 C语言函数 100
4.3.5 函数的传值调用 102
4.3.6 指针和函数 106
4.3.7 变量作用域及范围 109
4.4 程序实现 109
4.4.1 数据结构和好友功能函数声明 109
4.4.2 好友信息输出 112
4.4.3 好友查找 113
4.4.4 好友排序 114
4.4.5 好友增加 116
4.4.6 好友删除 117
4.4.7 程序测试和执行结果 118
项目练习 121
第5章 网络通信模块 123
5.1 设计目的 123
5.2 功能描述 124
5.3 C语言相关知识点 124
5.3.1 联合 124
5.3.2 主机字节序和网络字节序 126
5.3.3 main函数的参数 129
5.4 网络编程概述 133
5.4.1 网络概述 133
5.4.2 C/S编程模型 135
5.4.3 Windows网络程序编程 136
5.4.4 客户端和服务器编程范例 139
5.5 程序实现 148
5.5.1 功能介绍 148
5.5.2 客户端和服务器协议 149
5.5.3 服务器和客户端公共函数 149
5.5.4 服务器源代码分析 150
5.5.5 客户端源代码分析 152
5.5.6 程序测试和执行结果 155
项目练习 156
第6章 聊天记录的管理 157
6.1 设计目的 158
6.2 功能描述 158
6.3 C语言相关知识点 158
6.3.1 文本文件和二进制文件 159
6.3.2 缓冲文件系统和非缓冲文件系统 161
6.3.3 static变量 162
6.3.4 文件指针和文件描述符 165
6.3.5 文件操作库函数 168
6.3.6 文件的创建、打开和关闭 170
6.3.7 文件的读写 171
6.3.8 文件的定位 182
6.3.9 其他文件操作 184
6.4 程序实现 185
6.4.1 聊天消息的结构 185
6.4.2 聊天管理功能 185
6.4.3 源代码分析 185
6.4.4 程序测试和执行结果 189
项目练习 191
第7章 即时通信项目综合应用实例 192
7.1 设计目的 192
7.2 功能描述 193
7.3 总体设计 194
7.3.1 总体功能设计和模块划分 194
7.3.2 服务器和客户端协议 195
7.3.3 客户端和服务器交互消息类型 196
7.3.4 客户端总体设计 203
7.3.5 服务器总体设计 204
7.4 客户端和服务器详细设计 207
7.4.1 用户注册详细设计 207
7.4.2 用户登录详细设计 209
7.4.3 好友管理详细设计 209
7.4.4 消息模块详细设计 211
7.4.5 用户注销详细设计 212
7.4.6 网络传输详细设计 212
7.4.7 信息加密和解密详细设计 213
7.4.8 聊天记录详细设计 213
7.5 程序实现相关基础知识 213
7.5.1 内存动态分配和释放 213
7.5.2 线程创建和销毁 214
7.5.3 线程锁的使用 215
7.5.4 双向循环链表实现 216
7.6 服务器和客户端公共部分实现 219
7.6.1 消息封装和解析模块 220
7.6.2 加密和解密模块 223
7.7 客户端程序实现 225
7.7.1 文件组织 225
7.7.2 数据结构 226
7.7.3 用户命令处理 227
7.7.4 用户主程序 229
7.7.5 用户注册请求 232
7.7.6 用户登录请求 239
7.7.7 用户好友请求 239
7.7.8 用户聊天消息发送和响应处理 243
7.7.9 用户退出登录 244
7.7.10 用户聊天日志管理 245
7.8 服务器程序实现 245
7.8.1 文件组织 245
7.8.2 程序参数和配置 246
7.8.3 数据结构 246
7.8.4 主程序实现 247
7.8.5 用户消息处理 252
7.8.6 用户注册处理 254
7.8.7 用户登录处理 256
7.8.8 用户聊天信息处理 257
7.8.9 好友管理模块处理 259
7.8.10 用户注销处理 262
7.9 程序测试和执行结果 262
项目练习 265
附录A 客户端和服务器公共代码实现清单 267
附录A-1 list.h 267
附录A-2 list.c 268
附录A-3 msg_type.h 270
附录A-4 msg_cipher.c 273
附录A-5 msg_cipher.h 275
附录B 客户端代码实现清单 276
附录B-1 client_handle.c 276
附录B-2 client_log.c 278
附录B-3 client_main.c 280
附录B-4 client_user.c 283
附录B-5 cmsg_dec.c 287
附录B-6 cmsg_enc.c 292
附录B-7 cusr_cmd.c 295
附录B-8 client_config.h 305
附录B-9 client_handle.h 305
附录B-10 client_log.h 306
附录B-11 client_user.h 306
附录B-12 cmsg_dec.h 308
附录B-13 cmsg_enc.h 309
附录B-14 cusr_cmd.h 310
附录B-15 im_client.h 312
附录C 服务器代码实现清单 314
附录C-1 serv_handle.c 314
附录C-2 serv_main.c 322
附录C-3 serv_user.c 326
附录C-4 serv_dec.c 330
附录C-5 serv_enc.c 332
附录C-6 im_serv.h 335
附录C-7 serv_config.h 336
附录C-8 serv_handle.h 336
附录C-9 serv_user.h 337
附录C-10 serv_dec.h 338
附录C-11 serv_enc.h 339
附录D 客户端和服务器项目编译步骤 340
参考文献 341