Skip to content

muratbulut/datacomProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Datacom Project (Python + customtkinter)

Üç bileşenli hata tespit uygulaması (Parity, 2D Parity, CRC16, Hamming, IP Checksum):

  • Client1 (Sender): Kullanıcı metnini alır, seçilen yönteme göre kontrol bilgisini ekler, DATA|METHOD|CONTROL paketi olarak gönderir.
  • Server (Agent + Data Corrupter): Paketi alır, isteğe bağlı hata modlarıyla DATA alanını bozar, aynı kontrol bilgisiyle Client2’ye iletir.
  • Client2 (Receiver): Paketi alır, kontrol bilgisini yeniden hesaplar, uyuşma durumunu UI’da gösterir.
  • Injector (Hata Enjektörü): Server’ın hata modlarını canlı günceller (UI).
  • Monitor (Server Console): Server loglarını UI’dan izler.

Dizine genel bakış

Datacom-Project/
  src/common/        # Parity, 2D parity, CRC16, Hamming(12,8), IP checksum, paket helperları
  sender/app.py      # customtkinter UI + gönderim mantığı
  receiver/app.py    # customtkinter UI + kontrol/doğrulama mantığı
  server/app.py      # TCP relay + hata enjekte edici + log/ctrl dinleyicileri
  server/error_injector.py
  injector/app.py    # Hata enjektör UI (server ctrl portuna bağlanır)
  monitor/app.py     # Server log monitor UI (log portuna bağlanır)
  tests/             # Basit parity testleri
  requirements.txt   # customtkinter

Çalıştırma (aynı makinede)

Terminal 1 (server):

cd Datacom-Project
python -m pip install -r requirements.txt
python server/app.py               # Başlangıçta hatasız; modları injector'dan seçebilirsin

Terminal 2 (receiver):

cd Datacom-Project
python receiver/app.py

Terminal 3 (sender):

cd Datacom-Project
python sender/app.py

Terminal 4 (opsiyonel hata enjektör UI):

cd Datacom-Project
python injector/app.py

Terminal 5 (opsiyonel log monitor UI):

cd Datacom-Project
python monitor/app.py

Varsayılan bağlantılar:

  • Data: 127.0.0.1:27015 (Sender/Receiver)
  • Control: 127.0.0.1:27016 (Injector)
  • Log: 127.0.0.1:27017 (Monitor)

Tek seferde tüm terminalleri açmak için

PowerShell scripti: run_all.ps1

.\run_all.ps1

Bu script server, receiver, sender ve opsiyonel injector/monitor için ayrı PowerShell pencereleri açar. PYTHONPATH kök src klasörüne ayarlanır.

Paket formatı

DATA|METHOD|CONTROL
  • METHOD: PARITY, PARITY2D, CRC16, HAMMING, IPCHK
  • CONTROL:
    • Parity: EVEN:0 veya ODD:1
    • 2D Parity: {rows}x{cols}:{bitstring}
    • CRC16/IPCHK: 4 haneli hex
    • Hamming: 12*N bitlik string (N=byte sayısı)

UI

  • Sender: Mesaj alanı, yöntem seçimi (parity tipi menüsü), Connect/Send butonları, log alanı.
  • Receiver: Bağlantı durumu, son kontrol sonucu (OK / ERROR), gelen paket log’u.
  • Tema: customtkinter dark-blue; log sürekli akar.

Hata enjekte modları (server --modes)

  • BIT_FLIP, CHAR_SUB, CHAR_DEL, CHAR_INS, CHAR_SWAP, MULTI_BIT_FLIP, BURST
  • DATA alanı bozulur; CONTROL değişmez (hata tespiti için). Injector UI’sında “NONE” veya “RANDOM” seçeneği de var.

Testler

cd Datacom-Project
python -m pytest

(PyTest yoksa python -m unittest tests/test_controls.py yeterli.)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published