A client-server chat application built with Python sockets and Tkinter. Supports multiple clients, TLS encryption, private chats, message persistence, and heartbeat keep-alive.
clientServerSocketChat/
├── app/
│ ├── common/
│ │ ├── constants.py # Shared constants (serverPort, heartbeatInterval, ...)
│ │ └── protocol.py # Length-prefixed sendMsg / recvMsg helpers
│ ├── database/
│ │ └── databaseManager.py
│ ├── server/
│ │ └── chatServer.py
│ └── client/
│ └── chatClient.py
├── tests/
│ └── test_e2e.py
├── data/ # SQLite database (created at runtime)
├── certs/ # TLS certificates (auto-generated)
├── server.py # Server entry point
├── client.py # Client entry point
└── requirements.txt
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtStart the server (GUI dashboard):
python server.pyStart a client (repeat for multiple users):
python client.py| Command | Description |
|---|---|
/list |
Show online users |
@username message |
Request a private chat |
yes / no |
Accept or reject a private chat invitation |
exit / quit |
Leave a private chat session |
disconnect / bye |
Disconnect from the server |
| Variable | Default | Description |
|---|---|---|
USE_TLS |
1 |
Enable TLS encryption |
REQUIRE_TLS |
0 |
Reject non-TLS connections |
TLS_CERT |
certs/server.crt |
Certificate path |
TLS_KEY |
certs/server.key |
Private key path |
USE_TLS=0 python -m pytest tests/ -v