Day45 - TCP Server with poll() and epoll()¶
📌 Project Structure¶
Step 1: Basic TCP Server¶
- create socket
- bind to port
- listen
- accept client
- recv / send
Step 2: poll-based server¶
Key idea:
Features:
- supports multiple clients
- simple fd array management
Step 3: epoll-based server¶
Key APIs:
Flow:
Step 4: Non-blocking mode¶
Set fd:
Step 5: accept loop (drain queue)¶
Step 6: recv loop (non-blocking)¶
Step 7: send (non-blocking simplified)¶
Step 7: TX Queue¶
Step 8: EPOLLOUT Handling¶
EPOLLIN:
recv → tx_queue_set
enable EPOLLOUT
EPOLLOUT:
send pending data
if empty → disable EPOLLOUT
Test Script¶
Test coverage:
- single client
- multi-client
- rapid connect/close
- exceed client count