Linux Socket Programming by Example - Warren Gay

Linux Socket Programming by Example

Preface>
   Acknowledgements
   Tell Us What You Think!
   Introduction
   The by Example Series
   Who Should Use This Book
   Conventions Used in This Book
   Where to Find the Code
   What's Next

I: Basic Socket Concepts

1. Introducing Sockets
   A Brief Historical Introduction
   Understanding Sockets
   Comparing Sockets to Pipes
   Creating Sockets
   Performing I/O on Sockets
   Closing Sockets
   Writing a Client/Server Example

2. Domains and Address Families
   Nameless Sockets
   Understanding Domains
   Forming Socket Addresses
   Forming Local Addresses
   Forming Internet (IPv4) Socket Addresses
   Specifying an X.25 Address
   Specifying Other Address Families
   The AF_UNSPEC Address Family

3. Address Conversion Functions
   Internet IP Numbers
   Allocating IP Addresses
   Manipulating IP Numbers

4. Socket Types and Protocols
   Specifying the Domain of a Socket
   Using the socket(2) Function
   Choosing a Socket Type
   Choosing a Protocol
   Socket Domain and Type Summary
   Other Linux-Supported Protocols

5. Binding Addresses to a Socket
   The Purpose of the bind(2) Function
   Using the bind(2) Function
   Obtaining the Socket Address
   Interfaces and Addressing

6. Connectionless-Oriented Protocols
   The Methods of Communication
   Performing Input/Output of Datagrams
   Writing a UDP Datagram Server
   Writing a UDP Datagram Client
   Testing the Datagram Client and Server

7. Connection-Oriented Protocols for Clients
   Reviewing the Methods of Communication
   Internet Services
   Consulting the /etc/protocols File
   Writing a TCP/IP Client Program
   Using connect(2) on SOCK_DGRAM Sockets
   What's Next

8. Connection-Oriented Protocols for Servers
   Understanding the Role of the Server
   The listen(2) Function
   The accept(2) Function Call
   Writing a TCP/IP Server
   Modifying the Client Program

9. Hostname and Network Name Lookups
   Understanding the Need for Names
   Using the uname(2) Function
   Obtaining Hostnames and Domain Names
   Resolving Remote Addresses

II: Advanced Socket Programming

10. Using Standard I/O on Sockets
   Understanding the Need for Standard I/O
   Associating a Socket with a Stream
   Closing a Socket Stream
   Using Separate Read and Write Streams
   Winding Up Communications
   Handling Interrupts
   Defining Buffer Operation
   Applying FILE Streams to Sockets
   What's Next

11. Concurrent Client Servers
   Understanding the Multiple-Client Problem
   Overview of Server Functions
   Using fork(2) to Service Multiple Clients
   Designing Servers That Use select(2)
   Applying select(2) to a Server
   What's Next

12. Socket Options
   Getting Socket Options
   Setting Socket Options
   Retrieving the Socket Type ( SO_TYPE )
   Setting the SO_REUSEADDR Option
   Setting the SO_LINGER Option
   Setting the SO_KEEPALIVE Option
   Setting the SO_BROADCAST Option
   Setting the SO_OOBINLINE Option
   Options SO_PASSCRED and SO_PEERCRED
   What's Next

13. Broadcasting with UDP
   Understanding Broadcast Addresses
   Broadcasting from a Server
   Receiving Broadcasts
   Demonstrating the Broadcasts
   Broadcasting to a Network
   What's Next

14. Out-of-Band Data
   Defining Out-of-Band
   Understanding the Need for Out-of-Band Data
   Sockets and Out-of-Band Data
   Variations in Implementation
   Using Out-of-Band Data
   Understanding the Urgent Pointer
   Receiving Out-of-Band Data Inline
   Limitations of the Urgent Mode Pointer
   What's Next

15. Using the inetd Daemon
   Steps Common to Most Servers
   Introducing inetd
   Implementing a Simple stream tcp Server
   Datagram Servers with inetd
   What's Next

16. Network Security Programming
   Defining Security
   The Challenges of Security
   Identifying Friend or Foe
   Securing inetd Servers
   Installing Wrapper and Server Programs
   Introducing the Client Program
   Installing and Testing the Wrapper
   What's Next

17. Passing Credentials and File Descriptors
   Problem Statement
   Introducing Ancillary Data
   Introducing I/O Vectors
   The sendmsg(2) and recvmsg(2) Functions
   Ancillary Data Structures and Macros
   Presenting an Ancillary Data Example
   Testing the Socket Server
   What's Next

18. A Practical Network Project
   Problem Statement
   Solving the Quote Service Problem
   Examining the Quote Server Program
   Fetching Quotations via get_tickinfo()
   Broadcasting Quotes via broadcast()
   Examining the Client Program
   Compiling and Running the Demonstration
   What's Next

Appendixes

A. Socket Function Quick Reference
   Socket-Specific Functions
   Socket Addressing
   Reading of Sockets
   Writing to Sockets
   Other Socket I/O
   Controlling Sockets
   Network Support Functions
   Standard I/O Support
   Hostname Support

B. Socket-Related Structures Reference
   Socket Address Structures
   Miscellaneous Structures
   I/O-Related Structures

C. Useful Network Tables

glossary

 Last updated on 9/18/2001
Linux Socket Programming by Example, © 2002 Que