When I asked for feedback on the textbook in the Spring 2001 ICS 451 class, some people suggested that I provide an optional textbook for sockets programming. This textbook is not required, but several students thought it was very helpful for the projects.
UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI, by W. Richard Stevens, second edition, Prentice Hall 1998.
I have asked the bookstore to stock this book, though they will probably buy fewer than the number enrolled in the class.
The students have given me permission to quote their comments, and I include them below:
I would say the Socket book by Stevens, Unix Network Programming Vol1, "second edition", 1998, Prentice Hall and Vol2 Interprocess Communications for that matter. I used about 5 chapters from both. It would be nice if they were combined the like old Unix Network Programming, "first edition", 1992, but I don't know anything about that book except that it is more general.
I also bought the Gnu C Library Reference manual, vol 1 and 2, $60 for both.
The thing about this class is it's most students' first real exposure to using C the way it was meant to be used. I think once the programming happens and you do your first real cast, eg
inet_ntoa((* (struct in_addr *)&next_hop_ip)));
then it's easier to focus on the protocol and understand it. For me at least. I mean I am now comfortable using void pointers and function pointers and threads and sockets. Much of the "outside" effort in passing this class for me involved getting comfortable with those structures. And all the above mentioned books made my life much easier.
UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI Edition 2, by W. Richard Stevens
More information can be found at http://www.amazon.com/exec/obidos/ASIN/013490012X/qid=988518299/sr=1-4/ref=sc_b_5/002-5399325-8016008
I think this book is very complete and exlains things in detail. It can be a excellent reference book for a graduate student or a serious programmer as a reference. It's a good reference for a 451 student too but he need to read only very small part of it to reach this course's requirement.
personally, I suggest the following two:
Pocket Guide to TCP/IP Socket (C version), Author: Michael Donahoo, Kenneth Calvert Publisher: Morgan Kaufmann Publishers ISBN: 1558606866 $ 14.95
Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs Author: Jon Snader Publisher: Addison-Wesley Pub Co. ISBN: 0201615894 $ 34.95
I personally think the Pocket Guide book is perfect for the course, it shows the most essential basics of building a network program. And it's cheap enough for the students to purchase and keep.
The complete titles for the Richard Stevens' books are:
TCP/IP Illustrated, Volume 1 : The Protocols ISBN: 0201633469 ($65.95)
TCP/IP Illustrated, Volume 2 : The Implementation ISBM: 020163354X ($65.95)
TCP/IP Illustrated, Volume 3 : Tcp for Transactions, Http, Nntp, and the Unix Domain Protocols ISBN: 0201634953 ($47.95)
UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI ISBN: 013490012X ($68.00)
Advanced Programming in the UNIX Environment ISBN: 0201563177 ($65.95)