Skip to content

Releases: GiZano/multithreaded-python-chat

Private On-Premise TCP Chat - Official Release v1.0

29 Jan 22:24

Choose a tag to compare

"""

🚀 Private On-Premise TCP Chat - Official Release v1.0

Python
Docker
Capacity
Status

This is the Official Release of the Private On-Premise TCP Chat, a robust messaging solution developed by Group 3 at "Archimede" High School. Designed for high-performance internal communication, this system allows users on the same network to chat securely without ever touching the public Internet.

🌟 Project Objective

The main goal was to escape the risks of data interception by creating a system that operates entirely on a local network. By bypassing the router's path to the Internet, internal communications become significantly more secure and difficult to intercept.


🏗️ Architecture & Core Technologies

The system utilizes a Client-Server architecture (Star Topology) built on the TCP/IP stack for reliable data transfer.

Key Components:

  • Python Engine: Chosen for its library variety and ease of fast deployment.
  • Multithreading: The server creates an independent thread for every client, allowing it to handle thousands of requests simultaneously rather than processing them sequentially.
  • JSON Protocol: Used as the "de facto" standard for communication between all components, making it easy for developers to handle data as Python dictionaries.
  • Dockerized Environment: The server is encapsulated in a Docker container, making it easily runnable on any machine without dependency headaches.

🚀 Deployment Guide

Using Docker (Recommended)

The server is published on the GitHub Container Registry (GHCR) and is ready for enterprise-level execution.

# Start the server using Docker Compose
docker-compose up -d

Manual Setup

  1. Start the Server:
    python server/server_main.py
  2. Launch the Client:
    python client/client_main.py

📡 Interactive Endpoints

The server features "hand-crafted" endpoints that act like virtual users. Address your message to these keywords to receive a response:

  • /help: Shows all available commands.
  • /time: Returns the current server time to check for machine synchronization.
  • /list: Displays a formatted list of all currently active users.
  • /shout: Broadcasts your message to every single user connected to the platform.

📊 Performance & Stress Testing

We pushed the system to its breaking point using AI-generated testing scripts:

  • Scalability: The server successfully managed over 6,000 active users simultaneously.
  • Stability: No performance loss was detected at peak capacity.
  • Constraints: Testing was only capped at 6,000 due to the physical hardware limits (CPU/RAM) of the host machine, not the software itself.

👨‍💻 Group 3 Contributors

  • Author: Giovanni Zanotti
  • Documentation & Registry: Group 3 Lead Team
  • Repository: GitHub - ChatBot

Distributed Systems Course - Final Official Release
"""