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