TCP/IP Sockets in C,
Edition 2
Practical Guide for Programmers
Editors:
By Michael J. Donahoo and Kenneth L. Calvert
Publication Date:
17 Mar 2009
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.
Key Features
- Includes completely new and expanded sections that address the IPv6 network environment, defensive programming, and the select() system call, thereby allowing the reader to program in accordance with the most current standards for internetworking.
- Streamlined and concise tutelage in conjunction with line-by-line code commentary allows readers to quickly program web-based applications without having to wade through unrelated and discursive networking tenets.
1 Introduction
1.1 Networks,Packets,andProtocols
1.2 AboutAddresses
1.2.1 Writing DownIPAddresses
1.2.2 Dealing withTwoVersions
1.2.3 PortNumbers
1.2.4 SpecialAddresses
1.3 AboutNames
1.4 ClientsandServers
1.5 WhatIsaSocket?
2 Basic TCP Sockets
2.1 IPv4TCPClient
2.1.1 TCPServer
2.2 Creating andDestroying Sockets
2.3 Specifying Addresses
2.3.1 GenericAddresses
2.3.2 IPv4Addresses
2.3.3 IPv6Addresses
2.3.4 GenericAddressStorage
2.3.5 Binary/String AddressConversion
2.3.6 Getting aSocket’sAssociatedAddresses
2.4 Connecting aSocket
2.5 Binding toanAddress
2.6 Handling Incoming Connections
2.7 Communication
2.8 Using IPv6
3 Of Names and Address Families
3.1 Mapping NamestoNumbers
3.1.1 Accessing theNameService
3.1.2 Details,Details
3.2 Writing Address-GenericCode
3.2.1 GenericTCPClient
3.2.2 GenericTCPServer
3.2.3 IPv4-IPv6Interoperation
3.3 Getting NamesfromNumbers
4 Using UDP Sockets
4.1 UDPClient
4.2 UDPServer
4.3 Sending andReceiving withUDPSockets
4.4 Connecting aUDPSocket
5 Sending and Receiving Data
5.1 Encoding Integers
5.1.1 SizesofIntegers
5.1.2 ByteOrdering
5.1.3 SignednessandSignExtension
5.1.4 Encoding Integersby Hand
5.1.5 Wrapping TCPSocketsinStreams
5.1.6 Structure Overlays: Alignment and Padding
5.1.7 StringsandText
5.1.8 Bit-Diddling:Encoding Booleans
5.2 Constructing,Framing andParsing Messages
5.2.1 Framing
5.2.2 Text-BasedMessageEncoding
5.2.3 Binary MessageEncoding
5.2.4 Putting ItAllTogether
5.3 Wrapping Up
6 Beyond the Basic Socket Programming
6.1 SocketOptions
6.2 Signals
6.3 Nonblocking I/O
6.3.1 Nonblocking Sockets
6.3.2 AsynchronousI/O
6.3.3 Timeouts
6.4 Multitasking
6.4.1 Per-ClientProcesses
6.4.2 Per-ClientThread
6.4.3 ConstrainedMultitasking
6.5 Multiplexing
6.6 MultipleRecipients
6.6.1 Broadcast
6.6.2 Multicast
6.6.3 Broadcastvs. Multicast
7 Under the Hood
7.1 Buffering andTCP
7.2 DeadlockDanger
7.3 PerformanceImplications
7.4 TCPSocketLifeCycle
7.4.1 Connecting
7.4.2 Closing aTCPConnection
7.5 Demultiplexing Demystified
8 Socket Programming in C++
8.1 PracticalSocketLibrary Overview
8.2 PlusOneService
8.2.1 PlusOneServer
8.2.2 PlusOneClient
8.2.3 Running ServerandClient
8.3 Survey Service
8.3.1 Survey SupportFunctions
8.3.2 Survey Server
8.3.3 Survey Client
8.3.4 Running ServerandClient
8.4 Survey Service,Mark2
8.4.1 SocketAddressSupport
8.4.2 SocketiostreamInterface
8.4.3 EnhancedSurvey Server
8.4.4 EnhancedSurvey Client
8.4.5 AdministrativeClient
8.4.6 Running ServerandClients
1.1 Networks,Packets,andProtocols
1.2 AboutAddresses
1.2.1 Writing DownIPAddresses
1.2.2 Dealing withTwoVersions
1.2.3 PortNumbers
1.2.4 SpecialAddresses
1.3 AboutNames
1.4 ClientsandServers
1.5 WhatIsaSocket?
2 Basic TCP Sockets
2.1 IPv4TCPClient
2.1.1 TCPServer
2.2 Creating andDestroying Sockets
2.3 Specifying Addresses
2.3.1 GenericAddresses
2.3.2 IPv4Addresses
2.3.3 IPv6Addresses
2.3.4 GenericAddressStorage
2.3.5 Binary/String AddressConversion
2.3.6 Getting aSocket’sAssociatedAddresses
2.4 Connecting aSocket
2.5 Binding toanAddress
2.6 Handling Incoming Connections
2.7 Communication
2.8 Using IPv6
3 Of Names and Address Families
3.1 Mapping NamestoNumbers
3.1.1 Accessing theNameService
3.1.2 Details,Details
3.2 Writing Address-GenericCode
3.2.1 GenericTCPClient
3.2.2 GenericTCPServer
3.2.3 IPv4-IPv6Interoperation
3.3 Getting NamesfromNumbers
4 Using UDP Sockets
4.1 UDPClient
4.2 UDPServer
4.3 Sending andReceiving withUDPSockets
4.4 Connecting aUDPSocket
5 Sending and Receiving Data
5.1 Encoding Integers
5.1.1 SizesofIntegers
5.1.2 ByteOrdering
5.1.3 SignednessandSignExtension
5.1.4 Encoding Integersby Hand
5.1.5 Wrapping TCPSocketsinStreams
5.1.6 Structure Overlays: Alignment and Padding
5.1.7 StringsandText
5.1.8 Bit-Diddling:Encoding Booleans
5.2 Constructing,Framing andParsing Messages
5.2.1 Framing
5.2.2 Text-BasedMessageEncoding
5.2.3 Binary MessageEncoding
5.2.4 Putting ItAllTogether
5.3 Wrapping Up
6 Beyond the Basic Socket Programming
6.1 SocketOptions
6.2 Signals
6.3 Nonblocking I/O
6.3.1 Nonblocking Sockets
6.3.2 AsynchronousI/O
6.3.3 Timeouts
6.4 Multitasking
6.4.1 Per-ClientProcesses
6.4.2 Per-ClientThread
6.4.3 ConstrainedMultitasking
6.5 Multiplexing
6.6 MultipleRecipients
6.6.1 Broadcast
6.6.2 Multicast
6.6.3 Broadcastvs. Multicast
7 Under the Hood
7.1 Buffering andTCP
7.2 DeadlockDanger
7.3 PerformanceImplications
7.4 TCPSocketLifeCycle
7.4.1 Connecting
7.4.2 Closing aTCPConnection
7.5 Demultiplexing Demystified
8 Socket Programming in C++
8.1 PracticalSocketLibrary Overview
8.2 PlusOneService
8.2.1 PlusOneServer
8.2.2 PlusOneClient
8.2.3 Running ServerandClient
8.3 Survey Service
8.3.1 Survey SupportFunctions
8.3.2 Survey Server
8.3.3 Survey Client
8.3.4 Running ServerandClient
8.4 Survey Service,Mark2
8.4.1 SocketAddressSupport
8.4.2 SocketiostreamInterface
8.4.3 EnhancedSurvey Server
8.4.4 EnhancedSurvey Client
8.4.5 AdministrativeClient
8.4.6 Running ServerandClients
ISBN:
9780123745408
Page Count: 216
Retail Price (USD)
:
Donahoo/Calvert, TCP/IP Sockets in C(MK, 2001); paperback, 130p; $27.95, £16.99; £23.95; 9781558608269; sold over 20,000 copies
Calvert & Donahoo, TCP/IP Sockets in Java (MK, 2001); paperback, 116p; $27.95, £16.99, £23.95; 9781558606852; Sold 7,161 copies
Calvert & Donahoo, TCP/IP Sockets in Java (MK, 2001); paperback, 116p; $27.95, £16.99, £23.95; 9781558606852; Sold 7,161 copies
Software developers, network programmers, systems programmers, practitioners, researchers who know C and want to learn about writing C networking applications that use TCP/IP, students in courses on computer networking, operating systems, and distributed computing
Related Titles