Too many Java books simply consist of a rehash of the JDK class documentation. They describe each of the methods, the arguments, return values and exceptions. If you are lucky you may get a few code fragments, or even a trivial application, to show how the methods are used.
This one takes a different approach. It is based around a set of a dozen small-to-medium sized example programs. Each section starts with a small dose of theory, followed by the code listings and an explanation of how the code works. The programs include:
- a peer-to-peer UDP Chat program;
- TCP file transfer program;
- a user list server (similar to finger) which adds application- level reliability to raw UDP;
- an SMTP client;
- a TCP proxy server;
- an ICMP analyser, which uses (Microsoft-specific) methods to interface with native socket code.
The code listings (which exclude the UI) range in size from 2 to 20 pages; they occupy about a third of the book. The complete code (including UI) is included on CD, together with a 90-day trial copy of Visual J++. The code is generally easy to read, but is obviously sample code rather than production-quality. Like much sample Java code it 'handles' unexpected errors simply by calling System.out.println and then ignoring them. It would be instructive to take one of the simpler examples and develop it to include robust error handling.
Although I liked the approach of teaching network programming by example, I found the author's explanations of TCP/IP principles hard to follow. He introduces too many advanced concepts too early and without sufficient explanation. If you have a background in network programming you can usually work out what he means, but if not you could easily become confused. For this reason I don't think that this would be suitable as a first book on network programming; but if you have already mastered an introductory book and are looking for more realistic examples, you could give this one a try.