gogogo
Syndetics cover image
Image from Syndetics

TCP/IP sockets in C : practical guide for programmers / Michael J. Donahoo, Kenneth L. Calvert.

By: Contributor(s): Material type: TextTextSeries: Morgan Kaufmann practical guides seriesPublication details: Amsterdam ; Boston : Morgan Kaufmann, c2009.Edition: 2nd edDescription: xiii, 196 p. : ill. ; 24 cmISBN:
  • 9780123745408 (pbk.)
  • 0123745403 (pbk.)
Subject(s):
Holdings
Item type Current library Call number Status Date due Barcode
Standard Loan Thurles Library Main Collection 005.713 DON (Browse shelf(Opens below)) Available 30026000065218
Standard Loan Thurles Library Main Collection 005.713 DON (Browse shelf(Opens below)) Available 30026000066034

Enhanced descriptions from Syndetics:

TCP/IP Sockets in C: Practical Guide for Programmers, Second Edition is a quick and affordable way to gain the knowledge and skills needed to develop sophisticated and powerful web-based applications. The book'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. This edition has been expanded to include new advancements such as support for IPv6 as well as detailed defensive programming strategies.

If you program using Java, be sure to check out this book's companion, TCP/IP Sockets in Java: Practical Guide for Programmers, 2nd Edition .

Includes bibliographical references (p. 191-192) and index.

Table of contents provided by Syndetics

  • Preface to the Second Edition (p. ix)
  • 1 Introduction (p. 1)
  • 1.1 Networks, Packets, and Protocols (p. 1)
  • 1.2 About Addresses (p. 4)
  • 1.2.1 Writing Down IP Addresses (p. 4)
  • 1.2.2 Dealing with Two Versions (p. 5)
  • 1.2.3 Port Numbers (p. 5)
  • 1.2.4 Special Addresses (p. 6)
  • 1.3 About Names (p. 7)
  • 1.4 Clients and Servers (p. 7)
  • 1.5 What Is a Socket? (p. 8)
  • 2 Basic TCP Sockets (p. 11)
  • 2.1 IPv4 TCP Client (p. 11)
  • 2.2 IPv4 TCP Server (p. 17)
  • 2.3 Creating and Destroying Sockets (p. 22)
  • 2.4 Specifying Addresses (p. 23)
  • 2.4.1 Generic Addresses (p. 23)
  • 2.4.2 IPv4 Addresses (p. 24)
  • 2.4.3 IPv4 Addresses (p. 24)
  • 2.4.4 Generic Address Storage (p. 25)
  • 2.4.5 Binary/String Address Conversion (p. 26)
  • 2.4.6 Getting a Socket's Associated Addresses (p. 26)
  • 2.5 Connecting a Socket (p. 27)
  • 2.6 Binding to an Address (p. 27)
  • 2.7 Handling Incoming Connections (p. 28)
  • 2.8 Communication (p. 30)
  • 2.9 Using IPv6 (p. 30)
  • 3 Of Names and Address Families (p. 35)
  • 3.1 Mapping Names to Numbers (p. 35)
  • 3.1.1 Accessing the Name Service (p. 36)
  • 3.1.2 Details, Details (p. 40)
  • 3.2 Writing Address-Generic Code (p. 41)
  • 3.2.1 Generic TCP Client (p. 43)
  • 3.2.2 Generic TCP Server (p. 46)
  • 3.2.3 IPv4-IPv6 Interoperation (p. 49)
  • 3.3 Getting Names from Numbers (p. 50)
  • 4 Using UDP Sockets (p. 53)
  • 4.1 UDP Client (p. 54)
  • 4.2 UDP Server (p. 57)
  • 4.3 Sending and Receiving with UDP Sockets (p. 60)
  • 4.4 Connecting a UDP Socket (p. 61)
  • 5 Sending and Receiving Data (p. 63)
  • 5.1 Encoding Integers (p. 64)
  • 5.1.1 Sizes of Integers (p. 64)
  • 5.1.2 Byte Ordering (p. 66)
  • 5.1.3 Signedness and Sign Extension (p. 67)
  • 5.1.4 Encoding Integers by Hand (p. 68)
  • 5.1.5 Wrapping TCP Sockets in Streams (p. 71)
  • 5.1.6 Structure Overlays: Alignment and Padding (p. 73)
  • 5.1.7 Strings and Text (p. 76)
  • 5.1.8 Bit-Diddling: Encoding Booleans (p. 78)
  • 5.2 Constructing, Framing, and Parsing Messages (p. 79)
  • 5.2.1 Framing (p. 86)
  • 5.2.2 Text-Based Message Encoding (p. 91)
  • 5.2.3 Binary Message Encoding (p. 94)
  • 5.2.4 Putting It All Together (p. 96)
  • 5.3 Wrapping Up (p. 97)
  • 6 Beyond Basic Socket Programming (p. 99)
  • 6.1 Socket Options (p. 99)
  • 6.2 Signals (p. 100)
  • 6.3 Nonblocking I/O (p. 106)
  • 6.3.1 Nonblocking Sockets (p. 107)
  • 6.3.2 Asynchronous I/O (p. 108)
  • 6.3.3 Timeouts (p. 112)
  • 6.4 Multitasking (p. 116)
  • 6.4.1 Per-Client Processes (p. 117)
  • 6.4.2 Per-Client Thread (p. 123)
  • 6.4.3 Constrained Multitasking (p. 126)
  • 6.5 Multiplexing (p. 128)
  • 6.6 Multiple Recipients (p. 133)
  • 6.6.1 Broadcast (p. 134)
  • 6.6.2 Multicast (p. 137)
  • 6.6.3 Broadcast vs. Multicast (p. 142)
  • 7 Under the Hood (p. 143)
  • 7.1 Buffering and TCP (p. 145)
  • 7.2 Deadlock Danger (p. 148)
  • 7.3 Performance Implications (p. 149)
  • 7.4 TCP Socket Life Cycle (p. 150)
  • 7.4.1 Connecting (p. 150)
  • 7.4.2 Closing a TCP Connection (p. 154)
  • 7.5 Demultiplexing Demystified (p. 158)
  • 8 Socket Programming in C++ (p. 161)
  • 8.1 PracticalSocket Library Overview (p. 162)
  • 8.2 Plus One Service (p. 164)
  • 8.2.1 Plus One Server (p. 164)
  • 8.2.2 Plus One Client (p. 166)
  • 8.2.3 Running Server and Client (p. 168)
  • 8.3 Survey Service (p. 168)
  • 8.3.1 Survey Support Functions (p. 169)
  • 8.3.2 Survey Server (p. 172)
  • 8.3.3 Survey Client (p. 176)
  • 8.3.4 Running Server and Client (p. 178)
  • 8.4 Survey Service, Mark 2 (p. 178)
  • 8.4.1 Socket Address Support (p. 179)
  • 8.4.2 Socket Iostream Interface (p. 180)
  • 8.4.3 Enhanced Survey Server (p. 181)
  • 8.4.4 Enhanced Survey Client (p. 186)
  • 8.4.5 Administrative Client (p. 187)
  • 8.4.6 Running Server and Clients (p. 188)
  • References (p. 191)
  • Index (p. 193)

Author notes provided by Syndetics

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.

Powered by Koha