| | Copyright |
| | Preface |
| | | This Book's Audience |
| | | Roadmap |
| | | The Many Versions of Perl |
| | | Getting the Code for the Code Examples |
| | | Installing Modules |
| | | Online Documentation |
|
| | Acknowledgments |
| | Part 1: Basics |
| | | Chapter 1. Input/Output Basics |
| | | Perl and Networking |
| | | Networking Made Easy |
| | | Filehandles |
| | | Using Object-Oriented Syntax with the IO::Handle and IO::File Modules |
| | | Summary |
|
| | | Chapter 2. Processes, Pipes, and Signals |
| | | Processes |
| | | Pipes |
| | | Signals |
| | | Summary |
|
| | | Chapter 3. Introduction to Berkeley Sockets |
| | | Clients, Servers, and Protocols |
| | | Berkeley Sockets |
| | | Socket Addressing |
| | | A Simple Network Client |
| | | Network Names and Services |
| | | Network Analysis Tools |
| | | Summary |
|
| | | Chapter 4. The TCP Protocol |
| | | A TCP Echo Client |
| | | Socket Functions Related to Outgoing Connections |
| | | A TCP Echo Server |
| | | Adjusting Socket Options |
| | | Other Socket-Related Functions |
| | | Exceptional Conditions during TCP Communications |
| | | Summary |
|
| | | Chapter 5. The IO::Socket API |
| | | Using IO::Socket |
| | | IO::Socket Methods |
| | | More Practical Examples |
| | | Concurrent Clients |
| | | Summary |
|
|
| | Part 2: Developing Clients for Common Services |
| | | Chapter 6. FTP and Telnet |
| | | Net::FTP |
| | | Net::Telnet |
| | | Summary |
|
| | | Chapter 7. SMTP: Sending Mail |
| | | Introduction to the Mail Modules |
| | | Net::SMTP |
| | | MailTools |
| | | MIME-Tools |
| | | Summary |
|
| | | Chapter 8. POP, IMAP, and NNTP |
| | | The Post Office Protocol |
| | | The IMAP Protocol |
| | | Internet News Clients |
| | | A News-to-Mail Gateway |
| | | Summary |
|
| | | Chapter 9. Web Clients |
| | | Installing LWP |
| | | LWP Basics |
| | | LWP Examples |
|
|
| | Part 3: Developing TCP Client/Server Systems |
| | | Chapter 10. Forking Servers and the inetd Daemon |
| | | Standard Techniques for Concurrency |
| | | Running Example: A Psychotherapist Server |
| | | The Psychotherapist as a Forking Server |
| | | A Client Script for the Psychotherapist Server |
| | | Daemonization on UNIX Systems |
| | | Starting Network Servers Automatically |
| | | Using the inetd Super Daemon |
| | | Summary |
|
| | | Chapter 11. Multithreaded Applications |
| | | About Threads |
| | | A Multithreaded Psychiatrist Server |
| | | A Multithreaded Client |
| | | Summary |
|
| | | Chapter 12. Multiplexed Applications |
| | | A Multiplexed Client |
| | | The IO::Select Module |
| | | A Multiplexed Psychiatrist Server |
| | | Summary |
|
| | | Chapter 13. Nonblocking I/O |
| | | Creating Nonblocking I/O Handles |
| | | Using Nonblocking Handles |
| | | Using Nonblocking Handles with Line-Oriented I/O |
| | | A Generic Nonblocking I/O Module |
| | | Nonblocking Connects and Accepts |
| | | Summary |
|
| | | Chapter 14. Bulletproofing Servers |
| | | Using the System Log |
| | | Setting User Privileges |
| | | Taint Mode |
| | | Using chroot() |
| | | Handling HUP and Other Signals |
| | | Summary |
|
| | | Chapter 15. Preforking and Prethreading |
| | | Preforking |
| | | Prethreading |
| | | Performance Measures |
| | | Summary |
|
| | | Chapter 16. IO::Poll |
| | | Using IO::Poll |
| | | IO::Poll Events |
| | | IO::Poll Methods |
| | | A Nonblocking TCP Client Using IO::Poll |
| | | Summary |
|
|
| | Part 4: Advanced Topics |
| | | Chapter 17. TCP Urgent Data |
| | | "Out-of-Band" Data and the Urgent Pointer |
| | | Using TCP Urgent Data |
| | | The sockatmark() Function |
| | | A Travesty Server |
| | | Summary |
|
| | | Chapter 18. The UDP Protocol |
| | | A Time of Day Client |
| | | Creating and Using UDP Sockets |
| | | UDP Errors |
| | | Using UDP Sockets with IO::Socket |
| | | Sending to Multiple Hosts |
| | | UDP Servers |
| | | Increasing the Robustness of UDP Applications |
| | | Summary |
|
| | | Chapter 19. UDP Servers |
| | | An Internet Chat System |
| | | The Chat Client |
| | | The Chat Server |
| | | Detecting Dead Clients |
| | | Summary |
|
| | | Chapter 20. Broadcasting |
| | | Unicasting versus Broadcasting |
| | | Broadcasting Explained |
| | | Sending and Receiving Broadcasts |
| | | Broadcasting Without the Broadcast Address |
| | | Enhancing the Chat Client to Support Resource Discovery |
| | | Summary |
|
| | | Chapter 21. Multicasting |
| | | Multicast Basics |
| | | Using Multicast |
| | | Sample Multicast Applications |
| | | Summary |
|
| | | Chapter 22. UNIX-Domain Sockets |
| | | Using UNIX-Domain Sockets |
| | | A "Wrap" Server |
| | | Using UNIX-Domain Sockets for Datagrams |
| | | Summary |
|
|
| | Appendix A. Additonal Source Code |
| | | Net::NetmaskLite (Chapter 3) |
| | | PromptUtil.pm (Chapters 8 and 9) |
| | | IO::LineBufferedSet (Chapter 13) |
| | | IO::LineBufferedSessionData (Chapter 13) |
| | | DaemonDebug (Chapter 14) |
| | | Text::Travesty (Chapter 17) |
| | | mchat_client.pl (Chapter 21) |
|
| | Appendix B. Perl Error Codes and Special Variables |
| | | System Error Constants |
| | | Magic Variables Affecting I/O |
| | | Other Perl Globals |
|
| | Appendix C. Internet Reference Tables |
| | | Assigned Port Numbers |
| | | Registered Port Numbers |
| | | Internet Multicast Addresses |
|
| | Appendix D. Bibliography |
| | | Perl Programming |
| | | TCP/IP and Berkeley Sockets |
| | | Network Server Design |
| | | Multicasting |
| | | Application-Level Protocols |
|