Skip to content

Mrigaank-9/Network-Based-Data-Compression-Tool

Repository files navigation

Network-Based Data Compression Tool

Project Overview

This tool allows users to compress files using different algorithms and send or receive compressed data over a network. It's particularly useful in scenarios where bandwidth is limited or storage space needs to be optimized.

Key Components:

  1. File Selection and Compression
  2. Data Transmission
  3. Decompression
  4. Visualization

Components Explained

1. Compression Module

Functions:

  • compress_data: Takes raw data and the selected algorithm to compress it.
  • decompress_data: Takes compressed data and decompresses it back to its original form.

Algorithms: Supports multiple compression algorithms (e.g., zlib, gzip, bz2).

2. Network Module

Functions:

  • send_data: Sends compressed data to a specified IP address and port.
  • receive_data: Listens for incoming data on a specified IP address and port.

Communication: Utilizes socket programming to facilitate data transfer over the network.

3. Visualization Module

Function:

  • plot_compression_stats: Generates graphs or charts that depict statistics related to compression, such as compression ratio, time taken, etc.

Purpose: Helps users understand the effectiveness of the compression methods they are using.

4. Graphical User Interface (GUI)

Built using Tkinter, the GUI allows for interactive user experiences.

Components:

  • File Operations Section
  • Compression Algorithm Dropdown
  • Data Transmission Section
  • Visualization Button

Functionality:

  • File Selection
  • Sending Data
  • Receiving Data
  • Visualization

Workflow Summary

  1. User Interaction
  2. Data Compression
  3. Data Transmission
  4. Visualization
  5. Post-Processing

Example Use Case

Scenario: A user wants to send a large file over the network to a colleague.

Steps:

  1. The user selects the file and chooses the gzip compression algorithm.
  2. They click "Send Data", which compresses the file and sends it to the specified server address.
  3. The colleague, running the same application, clicks "Receive Data" to retrieve and decompress the file.
  4. Both users can visualize the compression results to evaluate the effectiveness of their chosen algorithms.

Conclusion

This project effectively combines data compression, network communication, and a user-friendly interface to create a practical tool for managing file transfers. It demonstrates the use of various programming concepts, including file handling, socket programming, GUI design, and data processing techniques.

About

This tool allows users to compress files using different algorithms and send or receive compressed data over a network. It's particularly useful in scenarios where bandwidth is limited or storage space needs to be optimized.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages