How yashaswinimullalli/simple_tcp_chat works
This repository is a Berkeley-sockets TCP chat server study with a cross-platform client and four runnable server implementations: a dual-console thread-per-client default, plus select-, thread-, and fork-based variants. Users connect with the client, send messages, and receive broadcasts from other clients; the default server can also broadcast console input. Each server is a standalone implementation rather than a shared pipeline. Relationships shown are supported by the README or sampled source; the comparison report is documentation, not a runtime subsystem.
Main entry points: client.c TCP Client · server_fork.c Fork Server · server.c Message Broadcast · server_select.c Select Server
Components 13
Chat Client
- TCP Client
client.c
Default Server
- Default Listener
server.c - Client Worker
server.c - Message Broadcast
server.c - Console Input
server.c
Server Variants
- Select Server
server_select.c - Thread Listener
server_thread.c - Thread Worker
server_thread.c - Thread Broadcast
server_thread.c - Fork Server
server_fork.c - Fork Client Handler
server_fork.c - Shared Client Table
server_fork.c
Other components
- Chat User
Connections 17
- Chat User → TCP Client: enters messages
README.md - TCP Client → Default Listener: connects to
client.c - TCP Client → Select Server: connects to
client.c - TCP Client → Thread Listener: connects to
client.c - TCP Client → Fork Server: connects to
client.c - Default Listener → Client Worker: spawns per client
server.c - Client Worker → Message Broadcast: broadcasts messages
server.c - Console Input → Message Broadcast: broadcasts console input
server.c - Message Broadcast → TCP Client: sends messages
server.c - Select Server → TCP Client: broadcasts messages
server_select.c - Thread Listener → Thread Worker: spawns per client
server_thread.c - Thread Worker → Thread Broadcast: broadcasts messages
server_thread.c - Thread Broadcast → TCP Client: sends messages
server_thread.c - Fork Server → Fork Client Handler: forks handler
server_fork.c - Fork Server → Shared Client Table: registers sockets
server_fork.c - Fork Client Handler → Shared Client Table: reads and removes sockets
server_fork.c - Fork Client Handler → TCP Client: broadcasts messages
server_fork.c