Üç 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|CONTROLpaketi 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.
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
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çebilirsinTerminal 2 (receiver):
cd Datacom-Project
python receiver/app.pyTerminal 3 (sender):
cd Datacom-Project
python sender/app.pyTerminal 4 (opsiyonel hata enjektör UI):
cd Datacom-Project
python injector/app.pyTerminal 5 (opsiyonel log monitor UI):
cd Datacom-Project
python monitor/app.pyVarsayı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)
PowerShell scripti: run_all.ps1
.\run_all.ps1Bu script server, receiver, sender ve opsiyonel injector/monitor için ayrı PowerShell pencereleri açar. PYTHONPATH kök src klasörüne ayarlanır.
DATA|METHOD|CONTROL
METHOD:PARITY,PARITY2D,CRC16,HAMMING,IPCHKCONTROL:- Parity:
EVEN:0veyaODD:1 - 2D Parity:
{rows}x{cols}:{bitstring} - CRC16/IPCHK: 4 haneli hex
- Hamming: 12*N bitlik string (N=byte sayısı)
- Parity:
- 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:
customtkinterdark-blue; log sürekli akar.
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.
cd Datacom-Project
python -m pytest(PyTest yoksa python -m unittest tests/test_controls.py yeterli.)