|
|
Perl 网络编程 |
|
|
|
| 原价:
¥62.00(以下报价瞬息万变,建议您点击全部站点比对) | | |通过以下方式购买,或许更便宜: |
|
|
| |
|
|
|
|
我要购书网的承诺:本网上购书中心所出售的"Perl 网络编程"图书保证正版,您在本购书中心享有收到图书七天内无条件退货!收到商品15日之内换货的待遇!
|
| |
退货规定:从本网上书店所购买的图书如有质量问题(字迹模糊/缺页/倒装/开线/开胶/折页/封皮破损/缺少随书赠品),可在收到商品7日之内可退货 |
| |
换货规定:从本购书中心所购买"Perl 网络编程"图书如有质量问题(字迹模糊/缺页/倒装/开线/开胶/折页/封皮破损/缺少随书赠品),可在收到商品15日之内换货
|
|
| |
| 这是一本使用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.exe 3.6.8 net_toolbox.exe 3. 7 小结 实4章 TCP协议 4.l 一个TCP echo客户 4.2 外出连接相关的套接字函数 4.3 一个TCP echo服务器 4. 3. 1 进入连接相关的套接字函数 4.3. 2 tcp_echo_servl.pl的局限性 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.pl脚本 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.pl脚本返回格式化的HTML 9.4. 5 HTML.::Parser模块 9.4. 6 使用HTML::Parser 9.4.7 HTML::ParserAPI 9.4.8 使用HTML::Parser的search_rfc.pl 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.pl程序 19.4.5 修改后的chat_server.pl程序 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 参考文献 |
|
|