More New and Used
from Private Sellers
Questions About This Book?
Why should I rent this book?
Renting is easy, fast, and cheap! Renting from eCampus.com can save you hundreds of dollars compared to the cost of new or used books each semester. At the end of the semester, simply ship the book back to us with a free UPS shipping label! No need to worry about selling it back.
How do rental returns work?
Returning books is as easy as possible. As your rental due date approaches, we will email you several courtesy reminders. When you are ready to return, you can print a free UPS shipping label from our website at any time. Then, just return the book to your UPS driver or any staffed UPS location. You can even use the same box we shipped it in!
What version or edition is this?
This is the 2nd edition with a publication date of 3/17/2009.
What is included with this book?
- The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any CDs, lab manuals, study guides, etc.
- The Rental copy of this book is not guaranteed to include any supplemental materials. You may receive a brand new copy, but typically, only the book itself.
- The eBook copy of this book is not guaranteed to include any supplemental materials. Typically only the book itself is included.
Written by two experienced networking instructors, this text's focused, tutorial-based approach enables the reader to master the tasks and techniques essential to virtually all client-server projects using sockets in C.
Michael J. Donahoo teaches networking on the undergraduate and graduate level at Baylor University, Where he is an associate professor. He has authored Socket programming books for a variety of languages and an SQL book. Kenneth L. Calvert is a professor at the University of Kentucky, where he teaches and researches computer network systems. He has been writing socket programs with TCP/IP for almost twenty years.
Table of Contents
|Preface to the Second Edition||p. ix|
|Networks, Packets, and Protocols||p. 1|
|About Addresses||p. 4|
|Writing Down IP Addresses||p. 4|
|Dealing with Two Versions||p. 5|
|Port Numbers||p. 5|
|Special Addresses||p. 6|
|About Names||p. 7|
|Clients and Servers||p. 7|
|What Is a Socket?||p. 8|
|Basic TCP Sockets||p. 11|
|IPv4 TCP Client||p. 11|
|IPv4 TCP Server||p. 17|
|Creating and Destroying Sockets||p. 22|
|Specifying Addresses||p. 23|
|Generic Addresses||p. 23|
|IPv4 Addresses||p. 24|
|IPv4 Addresses||p. 24|
|Generic Address Storage||p. 25|
|Binary/String Address Conversion||p. 26|
|Getting a Socket's Associated Addresses||p. 26|
|Connecting a Socket||p. 27|
|Binding to an Address||p. 27|
|Handling Incoming Connections||p. 28|
|Using IPv6||p. 30|
|Of Names and Address Families||p. 35|
|Mapping Names to Numbers||p. 35|
|Accessing the Name Service||p. 36|
|Details, Details||p. 40|
|Writing Address-Generic Code||p. 41|
|Generic TCP Client||p. 43|
|Generic TCP Server||p. 46|
|IPv4-IPv6 Interoperation||p. 49|
|Getting Names from Numbers||p. 50|
|Using UDP Sockets||p. 53|
|UDP Client||p. 54|
|UDP Server||p. 57|
|Sending and Receiving with UDP Sockets||p. 60|
|Connecting a UDP Socket||p. 61|
|Sending and Receiving Data||p. 63|
|Encoding Integers||p. 64|
|Sizes of Integers||p. 64|
|Byte Ordering||p. 66|
|Signedness and Sign Extension||p. 67|
|Encoding Integers by Hand||p. 68|
|Wrapping TCP Sockets in Streams||p. 71|
|Structure Overlays: Alignment and Padding||p. 73|
|Strings and Text||p. 76|
|Bit-Diddling: Encoding Booleans||p. 78|
|Constructing, Framing, and Parsing Messages||p. 79|
|Text-Based Message Encoding||p. 91|
|Binary Message Encoding||p. 94|
|Putting It All Together||p. 96|
|Wrapping Up||p. 97|
|Beyond Basic Socket Programming||p. 99|
|Socket Options||p. 99|
|Nonblocking I/O||p. 106|
|Nonblocking Sockets||p. 107|
|Asynchronous I/O||p. 108|
|Per-Client Processes||p. 117|
|Per-Client Thread||p. 123|
|Constrained Multitasking||p. 126|
|Multiple Recipients||p. 133|
|Broadcast vs. Multicast||p. 142|
|Under the Hood||p. 143|
|Buffering and TCP||p. 145|
|Deadlock Danger||p. 148|
|Performance Implications||p. 149|
|TCP Socket Life Cycle||p. 150|
|Closing a TCP Connection||p. 154|
|Demultiplexing Demystified||p. 158|
|Socket Programming in C++||p. 161|
|PracticalSocket Library Overview||p. 162|
|Plus One Service||p. 164|
|Plus One Server||p. 164|
|Plus One Client||p. 166|
|Running Server and Client||p. 168|
|Survey Service||p. 168|
|Survey Support Functions||p. 169|
|Survey Server||p. 172|
|Survey Client||p. 176|
|Running Server and Client||p. 178|
|Survey Service, Mark 2||p. 178|
|Socket Address Support||p. 179|
|Socket Iostream Interface||p. 180|
|Enhanced Survey Server||p. 181|
|Enhanced Survey Client||p. 186|
|Administrative Client||p. 187|
|Running Server and Clients||p. 188|
|Table of Contents provided by Ingram. All Rights Reserved.|