| | | 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 |
| |