|There's more than one way to do things|
Network Programming With Perlby jeffa (Bishop)
|on Feb 04, 2001 at 08:58 UTC||Need Help??|
Item Description: Licoln D. Stein's book of wonders
Review Synopsis: Everything about network programming with Perl
I love O'reilly. But I also love Addison Wesley. Lincoln D. Stein's newest title under Addison Wesley is a massive collection of examples and explanations of the how's and why's of network programming.
For the advanced network programmer, there is probably not much to offer - although there is always some little detail that even the most experienced guru will overlook. Such is the nature of our trade. With so much information, it's hard to learn it all - and especially if you are an initiate, it seems impossible. This book manages to be a great introduction AND a great reference book at the same time - 650 pages total (not including appendices and the index).
But for those who are not gurus in network programming, this is the book to start with.
Network Programming With Perl starts off not with networks, but instead with basic I/O. Stein shows how a Perl script that reads from a socket is very similar to one that reads from a local filehandle (actually, only one line is different). The concepts of blocking and buffering are covered within chapter 1 - pipes, signals, and forking are covered in chapter 2. Once these basic building blocks are understood by the reader, the rest of the material in the book becomes much clearer.
Many useful CPAN modules are covered in this book:
The first four chapters are the basics, the next five serve as a cookbook for writing various TCP/IP clients, such as FTP, POP, and LWP user agents. Chapters 10 through 16 cover the meat and potatoes of server programming: forking servers, daemons, inetd, some experimental 5.005 version multi-threading, multiplexing with IO::Select, nonblocking I/O, and a whole chapter on 'bullet-proofing' server code.
The last chapters cover more specialized areas, such as UDP chat servers, broadcasting, and multicasting. I wish an example of multicasting mp3's across a network would have been covered, but with the infomation provided, coding such an application should prove to be fairly simple.
The layout of the book is wonderful. There are many examples of code, and I really like the way various function explanations are presented. Platform independance is a goal in this book. Windows and Macintosh are covered as well as Unix, but the last chapter is dedicated soley to Unix: Unix-Domain sockets.
Network Programming With Perl covers some of the same material that can be found in the Perl Cookbook, but it has a clear direction that will prove to be beneficial to anyone wishing to travel it.