Linux Socket Programming
by Example begins with a very basic introduction to the fundamentals of socket level programming. As the chapters progress, you are introduced to related concepts, such as forming network addresses, Ipv6, the TCP/IP protocol suite and options, writing servers, and creating secure applications. You will also learn about socket fundamentals, domains and addresses, address conversion functions, socket types and protocols, Internet sockets, types and protocols, binding an address to a socket, using Datagram oriented protocols, and much more.
Linux Socket Programming
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.
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.
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.
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_BROAD