Added README for extra arguments

This commit is contained in:
Fabio Scotto di Santolo
2025-08-22 16:33:15 +02:00
parent 538cb4559e
commit 2abf6dc82f
2 changed files with 104 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
# 📘 APUE Chapter 16: Sockets Summary
### **1. Introduction to Sockets**
- Sockets are an abstraction for network communication.
- Enable communication between processes over the network.
- Support multiple protocols: TCP, UDP (IPv4, IPv6).
### **2. Socket Types**
- `SOCK_STREAM` TCP (reliable, connection-oriented).
- `SOCK_DGRAM` UDP (connectionless, unreliable).
- `SOCK_SEQPACKET` sequenced, reliable datagrams (less common).
- `SOCK_RAW` raw access to IP packets (used in advanced networking).
### **3. Socket System Calls**
1. `int socket(int domain, int type, int protocol);`
- Create a new socket descriptor.
2. `int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);`
- Assign an address/port to a socket (server side).
3. `int listen(int sockfd, int backlog);`
- Mark socket as passive (ready to accept connections).
4. `int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);`
- Accept a new incoming connection (blocking call).
5. `int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);`
- Establish connection to a server (client side).
6. `ssize_t read(int sockfd, void *buf, size_t count);`
7. `ssize_t write(int sockfd, const void *buf, size_t count);`
8. `ssize_t recv(int sockfd, void *buf, size_t len, int flags);`
9. `ssize_t send(int sockfd, const void *buf, size_t len, int flags);`
10. `int close(int sockfd);`
- Close the socket and free resources.
### **4. Socket Address Structures**
- IPv4: `struct sockaddr_in`
```c
struct sockaddr_in {
sa_family_t sin_family; // AF_INET
in_port_t sin_port; // port number (network byte order)
struct in_addr sin_addr; // IP address
};
```
- IPv6: `struct sockaddr_in6`
- Generic: `struct sockaddr` for compatibility.
### **5. Data Conversion Utilities**
- `htons()`, `htonl()`: host to network byte order (short/long)
- `ntohs()`, `ntohl()`: network to host byte order
- `inet_pton()`: convert string IP to `struct in_addr` or `struct in6_addr`
- `inet_ntop()`: convert address structure to string
### **6. TCP Client-Server Model**
**Server:**
1. `socket()`
2. `bind()`
3. `listen()`
4. `accept()` → handle client
5. `read()/write()` → communicate
6. `close()`
**Client:**
1. `socket()`
2. `connect()`
3. `read()/write()` → communicate
4. `close()`
### **7. UDP Model**
- Connectionless: no `listen()`/`accept()`.
- Use `sendto()` and `recvfrom()` for communication.
- No guarantee of delivery; suitable for lightweight or real-time protocols.
### **8. Concurrency in Servers**
- **Process-based**: `fork()` for each client
- **Thread-based**: `pthread_create()` for each client
- **I/O multiplexing**: `select()`, `poll()`, `epoll()`
### **9. Error Handling**
- Check return values of all socket calls.
- Use `perror()` or `strerror()` for diagnostics.
- Handle `EINTR` for interruptible syscalls.
### **10. Key Takeaways**
- Sockets abstract network communication using familiar file descriptor semantics.
- TCP ensures reliable, ordered delivery; UDP is fast but unreliable.
- Address conversions (`inet_pton`, `inet_ntop`) are essential for portability.
- Concurrency requires careful design: processes, threads, or event loops.
- Practice writing small client-server programs to solidify concepts.

View File

@@ -1,6 +1,7 @@
# 📚 Linux System Programming Chapter Index
Welcome! This is a collection of chapter summaries from the book **Linux System Programming** by Robert Love. Each chapter is organized in its own folder.
In the section extra there are other arguments take by ***Advanced Programming in the UNIX Enviroment*** by W. Richard Stevens.
## Available Chapters
@@ -15,6 +16,10 @@ Welcome! This is a collection of chapter summaries from the book **Linux System
- [Chapter 10 - Signals](10_Signals/README.md)
- [Exercises](exercises/README.md)
## Extra (APUE)
- [Chapter 16 - Network IPC: Sockets](16_NetworkIPCSockets/README.md)
> Each file contains an English summary of the chapter's key concepts.
## License