新書推薦:
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:HK$
65.0
《
罗马政治观念中的自由
》
售價:HK$
50.4
《
中国王朝内争实录:宠位厮杀
》
售價:HK$
61.6
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:HK$
44.6
《
未来特工局
》
售價:HK$
55.8
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:HK$
54.9
《
英国简史(刘金源教授作品)
》
售價:HK$
98.6
《
便宜货:廉价商品与美国消费社会的形成
》
售價:HK$
77.3
|
編輯推薦: |
1. 针对信创环境的网络编程书籍,基于多年教学实践,反复打磨内容。
2. 注重工程实践。本书的内容中设计的开发工具、技术等,与当前IT公司实际使用的主流开发工具链非常契合。
3. 本书配套资源丰富,包括 PPT、讲义、源代码,满足读者学习需要。
|
內容簡介: |
本书着重阐述基于龙芯平台(龙芯CPU和Loongnix操作系统)的网络程序开发。本书首先介绍龙芯平台下的C语言编译工具链,包括Loongnix操作系统的安装、Loongnix操作系统的基本使用方法、Loongnix操作系统中C语言的编程工具和代码管理工具Git;然后介绍在龙芯平台上基于编译工具链编写网络程序的相关知识,包括网络程序的基本原理,套接字应用程序接口的基本使用方法,多线程、多进程和I/O复用网络程序的编程方法,原始套接字的编程方法;最后通过一个综合性的网络软件项目案例,介绍使用Qt编写图形界面的网络程序的基本方法。
本书适合作为应用型普通高校的电子信息类专业、计算机科学与技术等专业的教材,也可作为高职院校相关专业的扩展教材。自主信息技术领域的相关技术人员也可将本书用作网络程序开发的参考资料。
|
關於作者: |
赵洪 从 2004 年起在北京电子科技学院负责“通信软件设计”“网络安全与保密技术”等课程的教学工作,有近 20 年的教学经验。曾带领技术团队完成了多个产品的研制和产业化,有丰富的软件开发经验。2014 年起,主持或参与了多个重要信创项目攻关及标准制定工作,为信创做出了自己的贡献。 李兆斌 北京电子科技学院副教授,长期从事计算机网络、通信安全方面的教学工作,负责“计算机网络安全实践”“IP 通信互联技术”等课程的教学。主持或参与了多个信创相关课题,有丰富的工程实践经验。 魏占祯 北京电子科技学院教授,长期从事通信网络、信息安全方面的教学和科研工作,多次获得省部级科技进步奖。近年来参与了信创领域的多项工作,有丰富的信创工程科研经验。
|
目錄:
|
目 录
第 1章 信创平台概述 1
1.1 信创CPU简介 1
1.1.1 龙芯CPU 1
1.1.2 其他信创CPU 2
1.2 Linux及信创操作系统 3
1.2.1 Linux操作系统简介 3
1.2.2 Linux与Windows的差异 3
1.2.3 常见的Linux发行版 4
1.2.4 信创操作系统 5
第 2章 龙芯信创平台 7
2.1 龙芯桌面计算机硬件平台 7
2.2 Loongnix操作系统 8
2.3 Loongnix操作系统使用入门 12
2.3.1 常用命令 12
2.3.2 应用软件安装与卸载 23
2.3.3 Vim编辑器基本使用方法 25
第3章 信创平台C语言编程环境 28
3.1 GCC与GDB 28
3.1.1 编译的基本概念 28
3.1.2 编译应用程序 32
3.1.3 编译静态链接库 34
3.1.4 编译动态链接库 35
3.1.5 使用GDB调试代码 42
3.2 Makefile基础 45
3.2.1 Makefile基本语法 45
3.2.2 使用变量与模式匹配 47
3.2.3 在Makefile文件中指定搜索路径 49
3.2.4 Makefile文件中基本函数的使用 50
3.2.5 简单的Makefile模板 51
3.3 CMake基础 53
3.3.1 CMake基本语法 53
3.3.2 使用CMake编译应用程序 56
3.3.3 使用CMake编译动态链接库 58
3.4 使用VSCode开发C程序 60
3.4.1 VSCode常用插件及设置 60
3.4.2 在VSCode中应用Makefile编译代码 61
3.4.3 在VSCode中使用CMake编译代码 62
3.4.4 VSCode中调试C程序的基本方法 63
3.4.5 在VSCode中应用代码规范格式化工具 65
第4章 使用Git管理代码 66
4.1 Git概述 66
4.1.1 Git代码版本控制概述 66
4.1.2 集中式和分布式版本控制系统 67
4.1.3 Git的基本结构 67
4.2 Git基本操作 68
4.2.1 Git安装与初始设置 68
4.2.2 保存代码到Git仓库 69
4.2.3 Git的基本工作流程 75
4.3 Git分支 76
4.3.1 分支的创建与切换 76
4.3.2 切换分支的注意事项 80
4.3.3 分支合并 88
4.3.4 分支变基 99
4.4 Git远程仓库和远程分支 102
4.4.1 远程仓库账户创建及密钥配置 102
4.4.2 创建远程仓库 103
4.4.3 使用变基重做 110
4.4.4 代码管理工作流程 114
第5章 网络编程基础 118
5.1 网络程序及其基本要素 118
5.2 网络通信协议 118
5.2.1 分层模型 118
5.2.2 TCP/IP 120
5.3 网络通信地址 124
5.3.1 MAC地址 125
5.3.2 IP地址 125
5.4 应用标识 127
5.4.1 端口号 127
5.4.2 端口号分配及常用端口号 128
5.5 进程的网络地址 128
5.5.1 三元组(半相关) 128
5.5.2 五元组(全相关) 129
5.6 网络程序的基本模式 129
5.6.1 客户端/服务器模式 129
5.6.2 浏览器/服务器模式 129
5.6.3 两种模式的对比 129
第6章 套接字编程 131
6.1 套接字概述 131
6.1.1 应用程序接口 131
6.1.2 发展历程 131
6.1.3 套接字通信的基础流程 132
6.2 编写“hello,world!”通信服务器程序 133
6.2.1 查询函数文档 133
6.2.2 创建套接字 133
6.2.3 绑定地址信息 135
6.2.4 建立套接字连接 138
6.2.5 发送消息 140
6.2.6 关闭套接字 142
6.3 编写“hello,world!”通信客户端程序 142
6.3.1 发送连接请求 142
6.3.2 接收消息 143
6.4 运行“hello,world!”程序 144
6.5 完善“hello,world!”程序 144
6.5.1 通过命令行输入服务器信息 144
6.5.2 优化错误处理 145
6.5.3 通过设置套接字选项解除地址被使用 145
6.5.4 循环实现服务器功能 148
6.5.5 使用shutdown()函数关闭套接字 149
6.5.6 使用多文件实现检错代码 149
6.6 编写TCP“回声”程序 150
6.6.1 “回声”的逻辑与实现 150
6.6.2 “回声”程序中的隐患—“粘包” 152
6.6.3 基于TCP的应用层协议设计 152
6.7 编写UDP“回声”程序 154
6.7.1 sendto()函数和recvfrom()函数 154
6.7.2 实现UDP的“回声”程序 156
6.7.3 UDP通信使用connect()函数注册地址信息 157
第7章 多线程网络程序 159
7.1 线程概述 159
7.1.1 操作系统、进程和线程之间的关系 159
7.1.2 进程和线程之间的关系 159
7.2 线程的创建与销毁 160
7.2.1 线程创建函数 160
7.2.2 线程销毁函数 162
7.3 线程同步方法 165
7.3.1 多线程同步问题 165
7.3.2 使用互斥量实现线程同步 167
7.3.3 使用信号量实现线程同步 168
7.4 编写多线程聊天室程序 171
7.4.1 使用多线程实现服务器的并发 172
7.4.2 实现转发消息到所有客户端 174
7.4.3 断开与对应客户端的连接 175
7.4.4 正确实现线程同步 176
7.4.5 实现聊天室客户端程序 177
7.4.6 代码优化 179
第8章 多进程网络程序 181
8.1 进程概述 181
8.1.1 进程ID 181
8.1.2 父进程和子进程 182
8.2 进程的创建与销毁 183
8.2.1 创建进程 183
8.2.2 销毁进程 184
8.2.3 进程退出 187
8.2.4 “僵尸”进程 188
8.2.5 使用异步方式销毁“僵尸”进程 190
8.3 多进程“回声”程序实现 195
8.3.1 服务器多进程的实现 195
8.3.2 “僵尸”进程的处理方法 198
8.3.3 使用多进程实现客户端的读、写功能分离 200
8.4 使用管道实现进程间通信 201
8.4.1 管道的使用方法 201
8.4.2 管道通信应用到多进程网络程序中 204
第9章 I/O复用套接字编程 206
9.1 I/O复用概述 206
9.2 使用select()函数实现I/O复用 207
9.2.1 select()函数 207
9.2.2 文件集合的基本操作函数 207
9.2.3 select()函数调用流程 208
9.3 使用select()函数实现服务器并发 210
9.3.1 使用select()函数监听套接字 210
9.3.2 使用select()函数监听通信套接字 211
9.3.3 并发服务器代码执行情况 212
9.4 epoll基本使用方法 213
9.4.1 epoll与select()函数的差异 213
9.4.2 epoll的基本操作函数 214
9.5 使用epoll实现并发服务器 216
9.5.1 使用epoll处理监听套接字 216
9.5.2 使用epoll处理通信套接字 216
9.6 epoll的边缘触发与条件触发 218
9.6.1 边缘触发与条件触发的概念 218
9.6.2 边缘触发下的数据读、写方法 218
9.6.3 3种并发实现方法的简单比较 220
第 10章 套接字编程补充 221
10.1 域名与IP地址 221
10.1.1 域名与DNS 221
10.1.2 ICP备案 222
10.1.3 编程中域名与IP地址的转换 222
10.2 其他I/O函数 225
10.2.1 recv()与send()函数 225
10.2.2 发送与接收带外数据 227
10.2.3 writev()与readv()函数 228
10.3 多播与广播的实现 229
10.3.1 多播与广播的概念 229
10.3.2 多播数据发送与接收 229
10.3.3 广播数据发送与接收 230
第 11章 原始套接字 232
11.1 原始套接字概述 232
11.2 原始套接字编程简介 233
11.2.1 原始套接字创建 233
11.2.2 原始套接字发送与接收数据包 234
11.2.3 原始套接字涉及的数据包结构 235
11.3 链路层原始套接字 239
11.3.1 链路层原始套接字的发送流程 239
11.3.2 ARP数据包发送样例 243
11.3.3 链路层原始套接字的接收流程 245
11.3.4 链路层原始套接字抓包程序样例 246
11.4 网络层原始套接字 248
11.4.1 网络层原始套接字的发送流程 248
11.4.2 使用ping工具发送ICMP数据包样例 250
11.4.3 网络层原始套接字的接收流程 252
11.4.4 使用ping工具接收ICMP数据包样例 253
11.5 pcap简介 255
11.5.1 pcap概述 255
11.5.2 pcap抓包流程 255
11.5.3 设置过滤条件 258
11.5.4 pcap抓包样例 260
第 12章 综合运用案例 262
12.1 实现简单的Web服务器 262
12.1.1 多线程Web服务器实现 262
12.1.2 HTTP简介 264
12.1.3 HTTP请求和响应报文结构 264
12.1.4 HTTP请求处理和返回HTTP响应 267
12.2 实现远程过程调用 270
12.2.1 远程过程调用简介 270
12.2.2 远程接口调用协议设计 271
12.2.3 远程调用服务实现 272
12.2.4 远程壳函数库的实现 274
12.3 使用Qt实现网络程序 278
12.3.1 Qt编程环境的安装及设置 278
12.3.2 面向对象编程与Qt中的信号与槽机制 282
12.3.3 基于对话框的Qt图形界面实现 286
12.3.4 QSocket相关类的使用方法 290
12.3.5 用Qt实现简单聊天室客户端 293
12.3.6 实现简单聊天室服务器 301
|
|