Python语言非常流行的一个原因在于它方便而灵活的特性。使用Python编写网络程序同样是非常方便的,它可以无拘无束地访问操作系统的网络库,更不用说很多不同的模块了,它们可以实现诸如HTTP、FTP、SMTP、IMAP、DNS等完整的协议。无论您是要编写网络程序来和本地的机器通信,还是和远程的服务器通信,Python都是您需要的语言。为了使您能快速掌握Python网络编程,书中加入了大约175个示例程序。
本书的第1部分讨论了客户端和服务器的设计,这是所有网络应用程序的基础。您将学到如何利用IPv6的优点来编写应用程序,如何与域名服务器通信,以及如何获取网页等。
本书第2部分将向您演示如何编写发送和接收E-mail的程序、提供静态和动态网页的程序、传输文件以及其他网络程序。您将学到如何使用Apache的mod python模块来建立基于Web的Pyttion应用程序。
本书最后一部分侧重于Python网络编程高级应用方面的知识,讲解了如何使用多任务处理和无阻塞的I/O来编写可以同时处理上千个客户端的服务器程序。在这个过程中,您将学到编写很多成功网络程序的奥秘。最重要的是,通过对超过6600行独立的、现成的代码的学习,您将能够立刻把您学到的知识应用到实践中去。
本书全面介绍了使用Python语言进行网络编程的基础知识,主要内容包括网络基础知识、高级网络操作、Web Services、解析HTML和XHTML、XML、E-mail服务、FTP、使用Python操作数据库、SSL、几种服务器端框架(包括Socket服务器、SimpleXMLRPCServer、CGI和mod_python),以及多任务处理(包括Forking、线程和异步通信)等。本书实用性强,共提供了大约175个实例,6 600行以上的代码,是帮助读者全面而快速地学习Python语言、编写网络程序的最佳实践。
本书可以作为各层次Python、Web和网络程序的开发人员的参考书,在实际工作中使用书中的技术,效果更佳。
关于作者
关于技术审校
致谢
简介
第1部分 底层网络
第1章 客户/服务器网络介绍
1.1 理解TCP基础
1.2 使用客户/服务器模式
1.3 理解UDP
1.4 理解物理传输和以太网
1.5 Python网络编程
1.6 总结
第2章 网络客户端
2.1 理解socket
2.2 建立socket
2.3 利用socket通信
2.4 处理错误
2.5 使用UDP
2.6 总结
第3章 网络服务器
3.1 准备连接
3.2 接受连接
3.3 处理错误
3.4 使用UDP
3.5 使用inetd或xinetd
3.6 通过syslog宋记录日志
3.7 避免死锁
3.8 总结
第4章 域名系统
4.1 进行]3NS查询
4.2 使用操作系统查询服务
4.3 使用PyDNS进行高级查询
4.4 总结
第5章 高级网络操作
5.1 半开放socket
5.2 超时
5.3 传输字符串
5.4 理解网络字节顺序
5.5 使用广播数据
5.6 使用IPv6
5.7 绑定到特殊的地址
5.8 使用poll()或select()实现事件通知
5.9 总结
第2部分 Web service
第6章 Web客户端访问
6.1 获取Web页面
6.2 认证
6.3 提交表单数据
6.4 处理错误
6.5 使用非HTTP协议
6.6 总结
第7章 解析HTML和XHTML
7.1 理解基本的HTML解析
7.2 处理真实的HTML
7.3 一个实际可以工作的例子
7.4 总结
第8章 XML和XML-RPC
8.1 理解XML文档
8.2 使用DOM
8.3 使用XML-RPC
8.4 总结
第3部分 E-mail服务
第9章 E-mail的编写和编码
9.1 理解传统信息
9.2 撰写传统的邮件
9.3 解析传统邮件
9.4 理解MIME
9.5 添加MIME附件
9.6 编写MIME替换方法
9.7 构建非英语的header
9.8 组成嵌套的多部分
9.9 解析MIME邮件
9.10 总结
第10章 简单邮件传输协议(SMTP)
10.1 SMTP库简介
10.2 错误处理和会话调试
10.3 从EHLO中得到信息
10.4 使用安全sockets层(SSL)和安全传输层(TLs)
10.5 认证
10.6 SMTP技巧
10.7 总结
第11章 POP
11.1 连接和认证
11.2 取得邮箱信息
11.3 下载邮件
11.4 删除邮件
11.5 总结
第12章 IMAP
12.1 理解Pydlon中的MAP
12.2 TWisted中的IMAP简介
12.3 理解Twisted基础
12.4 扫描文件夹列表
12.5 检查文件夹
12.6 基本下载
12.7 标记和删除邮件
12.8 取得邮件的部分内容
12.9 查找邮件
12.10 添加邮件
12.11 建立和删除文件夹
12.12 在文件夹之间移动邮件
12.13 总结
第4部分 多用途的客户端协议
第13章 FTP
13.1 理解FTP
13.2 用Python实现FTP功能
13.3 以ASCII模式下载文件
13.4 以二进制模式下载文件
13.5 上传数据
13.6 处理错误
13.7 扫描目录
13.8 递归下载
13.9 操纵服务器上的文件和目录
13.10 总结
第14章 数据库客户端
14.1 SQL和网络
14.2 Python中的SQL
14.3 连接
14.4 执行命令
14.5 事务
14.6 重复指令
14.7 得到数据
14.8 阅读Metadata
14.9 使用数据类型
14.10 总结
第15章 SSL
15.1 理解网络弱点
15.2 使用SSL降低攻击
15.3 理解Python中的SSL
15.4 使用内置的SSL
15.5 使用OpenSSL
15.6 使用OpenSSL验证服务器证书
15.7 总结
第5部分 服务器端框架
第16章 SoCketserver
16.1 使用BaseHTTPServer
16.2 SimpleHTTPServer
16.3 CGIHTTPServer
16.4 实现新协议
16.5 IPv6
16.6 总结
第17章 SlmpleXMLRPCServer
17.1 SimpleXMLRPCServer基础
17.2 提供函数
17.3 使用类的特性
17.4 使用DocXMLRPCServer
17.5 使用CGIXMLRPCRequestHandler
17.6 支持Multicall函数
17.7 总结
第18章 CGI
18.1 设置CGI
18.2 理解CGI
18.3 理解使用Pvthon编写CGI
18.4 取得环境信息
18.5 取得输入
18.6 转义特殊字符
18.7 处理一个字段的多个输入
18.8 上传文件
18.9 使用cookie
18.10 总结
第19章 mod-python
19.1 理解为什么需要mod-python
19.2 安装和配置mod-python
19.3 理解mod_python基础
19.4 分派请求
19.5 处理输入
19.6 转义(Escaping)
19.7 理解解释器实例
19.8 在mod_dython中预建立处理程序
19.9 总结
第6部分 多任务处理
第20章 forking
20.1 理解进程
20.2 理解fork()
20.3 forking的第一步
20.4 forking服务器
20.5 锁定
20.6 错误处理
20.7 总结
第21章 线程
21.1 在Python中使用线程
21.2 编写含有线程的服务器
21.3 编写含有线程的客户端
21.4 总结
第22章 异步通信
22.1 决定是否使用异步I/O
22.2 使用异步通信
22.3 高级的服务器端使用
22.4 监控多个master socket
22.5 在服务器上使用Twisted
22.6 总结
索引