Perl網路編程

Perl網路編程

《Perl網路編程》是清華大學出版社出版的圖書,ISBN是7302052891。

基本信息

內容簡介

這是一本使用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.5SOCKADDR_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.2SO_REUSEADDR套按字選項

4.4.3fcntl()函式和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 參考文獻

相關詞條

相關搜尋

熱門詞條

聯絡我們