标题：Perl网络编程
基本信息
原书名： Network Programming With Perl  原出版社： Addison-Wesley
作者： （美）Lincoln D.Stein   
译者： 王超 刘云
丛书名： 科海电脑技术丛书
出版社：清华大学出版社
ISBN：7302052891
上架时间：2002-3-25
出版日期：2002 年3月
页码：582
版次：1-1 
内容简介
这是一本使用Perl编程语言创建基于网络的应用程序的指导书。
全书内容分为四个部分：基础知识，为公共服务开发客户，开发TCP客户/服务器系统和高级主题。本书的目的是教会读者利用最新版Perl为TCP/IP提供的接口，创建健壮、易维护且高效的客户/服务器应用程序，核心内容是设计基于TCP的客户/服务器系统的方法和选择以及用于特定应用的高级技术。
全书层次分明，内容由浅入深，实例丰富，并给出了具有实际指导意义的源代码。因此，对于网络管理员和广大Perl初中级程序员来说，本书是一种重要的资源。 
目录
第1部分基础知识 
第1章 输入输出基础 
1．1 perl和网络 
l．1．l 为进程间通信建立的语言 
1．1．2 为文本处理建立的语言 
1．1．3 开放源代码项目 
1．1．4 面向对象网络扩展 
1. 1．5 安全 
1．1．6 性能 
1．2 轻松上网 
1．3 文件句柄 
1．3．l 标准文件句柄 
1. 3．2 输入和输出操作 
1．3．3 检测文件尾 
1．3. 4 行尾之处的混乱 
1．3. 5 打开和关闭文件 
1. 3．6 缓冲和阻塞 
l．3．7 标推i/o缓冲 
1．3. 8 传递和存储文件句柄 
1．3. 9 错误检测 
.1．4. 使用io：：handle模块和io：：file模块的面向对象语法 
l．4．l 对象和引用 
1．4．2 io：：handle模块和io：：file模块 
1．5 小结 
第2章 进程、管道和信号 
2．l 进程 
2．1．l fork（）函数 
2．1．2 system（）函数和exee（）函数 
2．2 管道 
2. 2. 1 打开管道 
2．2. 2 使用管道 
2．2. 3 易用的管道：反引号运算符 
2．2．4 强大的管道：pipe()函数 
2．2．5 双向管道 
2．2．6 从一般的文件句柄中区分管道 
2. 2．7 可怕的pipe错误 
2. 3 信号 
2．3．1 通用信号 
2. 3. 2 截取信号 
2. 3．3 处理pipe异常 
2．3．4 发送信号 
2. 3．5 对信号处理程序的忠告 
2．3. 6 让慢的系统调用超时 
2．4 小结 
第3章 berkeley套接字简介 
3．l 客户、服务器和协议 
3．l．1 协议 
3. 1．2 面向二进制和面向文本的协议 
3．2 berkeley套接字 
3．2．l 套接字分析 
3. 2. 2 数据报套按字 
3．2．3 流套接字 
3. 2. 4 数据报套接字与流套接字 
3．3 套接字寻址 
3．3．1 ip地址 
3. 3．2 保留ip地址、子网和网络掩码 
3．3．3 ipv6 
3．3．4 网络端口 
3．3．5 sockaddr_in结构 
3．4 一个简单的网络客户 
3．5 网络名和服务 
3．5．l 将主机名转换为ip地址 
3. 5．2 主机名转换示例 
3. 5. 3 获取协议和服务的相关信息 
3. 5．4 再访dnyhme客户 
3．5．5 网络信息的其他资源 
3．6 网络分析工具 
3. 6．l ping 
3. 6．2 nslookup 
3．6．3 traceroute 
3. 6．4 netstat 
3. 6．5 tcpdump 
3．6．6 mactcp watcher 
3. 6．7 scanner 
3．6．8 net_toolbox 
3. 7 小结 
实4章 tcp协议 
4．l 一个tcp echo客户 
4．2 外出连接相关的套接字函数 
4．3 一个tcp echo服务器 
4. 3. 1 进入连接相关的套接字函数 
4．3. 2 tcp_echo_servl的局限性 
4．4 调整套接字选项 
4．4．l 通用的套接字选项 
4．4．2 so_reuseaddr套按字选项 
4．4．3 fcntl（）函数和ioctl（）函数 
4．5 其他套接字相关的函数 
4. 6 tcp信中的异常情况 
4．6．l 调用connect（）过程中的异常 
4．6．2 读操作和写操作中的异常 
4．7 小结 
第5章 io：： socket api 
5． l 使用io：： socket 
5．1．l 一个daytime客户 
5．1．2 tcp echo客户 
5．2 io：socoke方法 
5．2．1 io：：handle类层次 
5．2．2 创建io：socoket：：inet对象 
5. 2．3 io：： socket对象方法 
5．3 更实用的例子 
5．3．1 再访逆转的echo服务器 
5．3. 2 一个web客户 
5．4 性能和风格 
5．5 并发客户 
5．5．l 一个唠叨的客户，第一次尝试 
5．5．2 一个唠叨的客户，第二次尝试 
5．6 小结 
第2部分为公共服务开发客户 
第6章 ftp和telnet 
6．1 net：： ftp 
6．1．l 一个net：：ftp例子 
6．1．2 ftp和基于命令的协议 
6．1. 3 net：：ftp api 
6. 1．4 一个目录镜像脚本 
6．2 net：： telnet 
6. 2．l 一个简单的net：：telnet例子 
6．2. 2 net：： telnet api 
6. 2. 3 一个远程改变密码的程序 
6. 2．4 对非teinet协议使用net：：telnet 
6．2．5 expect模块 
6．3 小结 
第7章 smtp：发送邮件 
7．l 邮件模块简介 
7. 2 net：： smtp 
7．2. 1 smtp协议 
7. 2．2 nct：:smtp api 
7. 2．3 使用net：:smtf 
7．3 mailtools 
7. 3．l 使用mailtools 
7．3．2 mail：： header 
7．3. 3 mai1：：internet 
7．3．4 一个邮件自动响应程序 
7．3．5 mail：：mailer 
7．4 mime．tools 
7．4．1 mime简介 
7．4. 2 mime：："模块的组织 
7．4. 3 mime：： entity 
7. 4．4 mime：： head 
7．4．5 mime：： body 
7. 4. 6 mime：： patser 
7. 4．7 mime例子：邮寄新近的cpan项 
7．5 小结 
第8章 pop，imap和nntp：处理邮件和网络新闻 
8．1 pop 
8．1．1 pop3邮箱概述 
8. 1．2 net：：pop3 api 
8．l．3 通过pop检索并处理mime消息 
8．1．4 pop_fetch脚本 
8．1．5 popparser模块 
8．2 imap协议 
8．2．1 imai，邮箱概述 
8．2. 2 net：：imap：：simple api 
8. 3 internt新闻客户 
8．3. 1 net：：nntp 
8．3. 2 net：：nntp api 
8. 4 一个新闻到邮件的网关 
8．5 小结 
第9章 web客户 
9．1 安装lwp 
9．2 lwp基础知识 
9．2．l http：：request 
9．2．2 htrp：：response 
9．2．3 lwp：：useragen 
9．3 lwp实例 
9．3．l 抓取rfc列表 
9．3．2 镜像rfc列表 
9．3．3 模拟填充表单 
9．3．4 使用http：：request：：commn发送填充表单 
9．3．5 使用multipart/form－data的文件上传 
9．3．6 抓取有密码保护的页面 
9．4 解析html和xml 
9．4．l 格式化html 
9．4．2 html：：formatter api 
9．4．3 html：：treebuilderapi 
9．4．4 从get_url脚本返回格式化的html 
9．4. 5 html．：：parser模块 
9．4. 6 使用html：：parser 
9．4．7 html：：parserapi 
9．4．8 使用html：：parser的search_rfc 
9．4．9 从远程url中提取图像 
9．5 小结 
第3部分 开发tcp客户/服务器 
第10章 创建子进程的服务器和inetd守护进程 
10．l 并行的标准技术 
10．1．l 创建于进程的服务器 
10．1．2 多线程服务器 
10．l．3 多路复用服务器 
10．2 运行程序的例子：心理疗法学者服务器 
10. 3 作为创建于进程服务器的心理疗法学者 
10．3．1 僵进程 
10．3．2 在chld处理程序中收割子进程 
10．3. 3 使用fork（）的心理疗法学者服务器 
10．3．4 在windows平台上使用心理疗法学者服务器 
10．4 心理疗法学者服务器的一个客户脚本 
10．5 在unix系统上守护进程化 
10．5．1 自动后台运行 
10．5．2 pid文件 
10．6 自动启动网络服务器 
10．7 使用inetd超级守护进程 
10．7．l 使用inetd 
10．7. 2 在wait模式中使用inetd 
10．8 小结 
第11章 多线程应用程序 
11. l 关于线程 
11．1．l 线程是试验性的 
11．1. 2 线程api 
11．1．3 一个简单的多线程应用程序 
11．1．4 锁定 
11．1．5 thread模块的功能和方法 
11．1．6 线程和信号 
11．2 一个多线程的心理疗法学者服务器 
11. 3 一个多线程的客户 
11．4 小结 
第12章 多路复用应用程序 
12．1 一个多路复用的客户 
12．2 io：:select模块 
12．2．l 内置的selec必函数 
12. 2．2 什么时候文件句柄为i/o做好推备 
12．2. 3 组合select()和标准i／o 
12．2．4 调整"低水位线" 
12．3 多路复用的心理疗法学者服务器 
12．3. 1 服务器主程序 
12．3. 2 eliza：：chatbot：：polite模块 
12．3．3 心理疗法学者服务器的问题 
12．4 小结 
第13章 无阻塞i/o 
13．l 创建无阻塞i／o句柄 
13．1．l 创建无阻塞句柄：函数接口 
13．1．2 创建无阻塞句柄：面向对象接口 
13．2 使用无阻塞句柄 
13．2．l 对无阻塞文件旬柄调用sysread（） 
13. 2. 2 对无阻塞文件句柄调用syswrite（） 
13. 3 使用无阻塞文件旬柄执行面向行的i／o 
13. 3. 1 使用io：：gedine 
13. 3．2 io：：getline模块 
13．4 一个普通的无阻塞uo模块 
13．4．l 一个无阻塞的echo服务器 
13．4．2 一个无阻塞的面向行的服务器 
13．4．3 io：:sessinndata模块 
13．4. 4 io：:sessinnset模块 
13．4．5 io：：linebufferedset类和io：：linebufferedsessinnl 
13. 4．6 对非套接字句柄使用io：：sessionset 
13．5 无阻塞连接和接收 
13．5．1 io：：socket超时参数 
13．5．2 无阻塞connect（） 
13. 5．3 多个同时连接 
13．5．4 一个简单的http客户 
13. 5．5 httpfetch模块 
13．5．6 无阻塞accept（） 
13. 6 小结 
第14章 安全的服务器 
14. 1 使用系统日志 
14．1．1 unix的syslog 
14. 1．2 sys：:syslog 
14. 1．3 向心理疗法学者服务器添加日志功能 
14．1. 4 使用删（）和出成）做日志 
14．1．5 在win32平台上使用事件日志 
14. 1．6 直接写日志到文件中 
14．2 设置用户特权 
14．2. 1 改变用户id和组id 
14. 2．2 作为根用户运行心理疗法学者服务器 
14．3 受损模式（taint mod） 
14．4 使用chroot（） 
14．5 处理hup和其他信号 
14. 5．l 对主脚本的改变 
14．5．2 对daemon模块的改变 
14. 6 小结 
第15章 预创建于进程和预创建线程 
15．l 预创建于进程 
15．l．l 一个web服务器 
15．l．2 序列化的web服务器 
15. 1．3 接收并创建于进程的web服务器 
15．1．4 预创建子进程的web服务器，版本1 
15．1. 5 预创建子进程的web服务器，版本2 
15．1．6 自适应的预创建于进程的服务器 
15．1．7 使用共享内存的自适应的预创建于进程的服务器 
15．2 预创建线程 
15. 2．l 一个线程化的web服务器 
15．2．2 简单的预创建线程的服务器 
15．2．3 自适应的预创建线程的服务器 
15．2．4 netserver：：generic模块 
15. 3 性能测量 
15．4 小结 
第16章 io：： poll 
16．1 使用io：：poll 
16．2 io：：poll事件 
16. 3 io：：poll方法 
16．4 一个使用io：：poll的无阻塞tcp客户 
16．5 小结 
第4部分高级话题 
第17章 tcp紧急数据 
17. 1 "带外"数据和紧急指针 
17. 2 使用tcp紧急数据 
17．2．1 so_oobinline选项 
17．2．2 与select（）一起使用紧急数据 
17. 3 sockatmark（）函数 
17．4 一个曲解（travesty）服务器 
17．4．1 text：：travesty模块 
17．4．2 设计曲解服务器 
17．4．3 曲解客户程序 
17．4．4 测试曲解服务器 
17．5 小结 
第18章 udp协议 
18．l 一个日期时间客户程序 
18．2 创建并使用udp套接字 
18. 2．l 创建udp套接字 
18．2．2 send（）和recv（）函数 
18．2．3 绑定udp套接字 
18．2．4 连接到udp套接字 
18. 3 udp错误 
18．3. 1 异步错误 
18. 3. 2 丢包和分段 
18．4 使用io：：socket处理udp套按字 
18．5 发送给多台主机 
18．6 udp服务器 
18．6．l 一个逆转回显的udp服务器 
18．6．2 udp客户回显程序 
18. 7 让udp应用程序更加健壮 
18. 7．l 让udp接收过程超时 
18．7．2 复制数据报和乱序数据报 
18. 8 小结 
第19章 udp服务器 
19．l 一个internet聊天系统 
19．1．l 一个会话示例 
19．1．2 聊天系统的设计 
19．2 聊天客户程序 
19．2．1 chatobjects：：comm模块 
19．2. 2 chatobjects：：chatcodes模块 
19．3 聊天服务器 
19．3．1 服务器脚本主程序 
19．3．2 chatobects：：user类 
19．3．3 chatobects：：channel类 
19. 4 检测不响应的客户程序 
19．4．l 在聊天系统中添加still_here事件 
19. 4．2 对chatobjects：：chatcodes模块的修改 
19．4．3 chatobjects：：timeduser子类 
19．4．4 修改后的chat_client程序 
19．4．5 修改后的chat_server程序 
19．5 小结 
第20章 广播 
20．1 单报和广播 
20．2 广播的概念 
20．3 发送和接收广播 
20．3. 1 发送广播 
20．3．2 接收广播 
20．4 没有广播地址的广播 
20．4. 1 全1的广播地址 
20．4．2 在运行时查找具有广播能力的接口 
20．4. 3 io：： interface模块 
20．4．4 io：： interface模块剖析 
20．5 增强聊天客户程序以支持资源发现 
20．6 小结 
第21章 组播 
21．l 组播的基本知识 
21．1．l 保留的组播地址 
21．1．2 组播地址和硬件过滤 
21．1．3 穿过wan的组播 
21．1．4 组播ttl 
21．2 使用组括 
21．2. 1 发送组括消息 
21．2．2 用于发送组播消息的套按字选项 
21．2. 3 接收组播消息 
21．2．4 io：：socket：：multicast模块 
21．3 组括应用程序示例 
21．3．1 日期时间组括服务器 
21．3．2 使用组播的日期时间客户程序 
21．3．3 使用组播的聊天系统 
21．4 小结 
第22章 unix域套接字 
22. 1 使用unix域套接字 
22．1．l 面向函数的unix域套接字接口 
22．1．2 面向对象的unix域套按字接口 
22．l．3 unix域套按字与文件权限 
22．2 一个"换行"服务器 
22. 2．1 text：：wrap服务器 
22．2．2 text：：wrap客户程序 
22．3 将unix域套按字用于数据报 
22．3. 1 使用unix域套按字的日期时间服务器 
22．3．2 使用unix域套接字的日期时间客户程序 
22. 4 小结 
附录a 补充的源代码 
附录b perl的错误码和特殊变量 
附录c 参考文献