Bu proje, iki kullanıcı arasında TCP üzerinden çift yönlü metin ve JPG/PNG görüntü aktarımı yapan basit bir istemci-sunucu uygulamasıdır.
- Ders projesi: Bilgisayar Mühendisliği
- İşletim sistemi: Ubuntu Linux
- Programlama dili: C++17
- İletişim: TCP
- Varsayılan adres:
127.0.0.1:5000 - Kullanıcı sayısı: Bir sunucu ve bir istemci
- İki yönlü metin mesajlaşması
- JPG ve PNG dosyası gönderme
- Görüntüleri
alinanlar/klasörüne kaydetme - TCP akışında eksik
sendverecvişlemlerini tamamlama - Metin ve görüntüyü ayıran uygulama üst bilgisi
- Dosya boyutu ve dosya türü kontrolü
- Mevcut dosyanın üzerine yazmama
- Alım işlemini ayrı bir iş parçacığında yürütme
tcp_messenger/
├── client.cpp # İstemci programı
├── server.cpp # Sunucu programı
├── protocol.h # Mesaj türleri, üst bilgi ve TCP yardımcıları
├── protocol.cpp # Proje dosya yapısındaki protokol kaynak dosyası
├── Makefile # Derleme komutları
├── test_resimleri/ # Test amacıyla kullanılan görüntüler
└── alinanlar/ # Çalışma sırasında alınan görüntüler
Proje klasöründe:
makeTemiz derleme için:
make clean
makeİlk terminalde sunucuyu başlatın:
./serverİkinci terminalde istemciyi başlatın:
./clientİstemci bağlandığında şu biçimde mesaj yazılabilir:
Merhaba
Programdan çıkmak için:
cikis
Test görüntülerinden birini göndermek için:
!resim test_resimleri/foto1.jpg
Alınan görüntü karşı tarafta şu klasöre kaydedilir:
alinanlar/foto1.jpg
Her mesajın başında 7 baytlık uygulama üst bilgisi bulunur:
| Alan | Boyut | Açıklama |
|---|---|---|
| Tür | 1 bayt | 1: metin, 2: görüntü |
| Dosya adı uzunluğu | 2 bayt | Görüntü dosyasının ad uzunluğu |
| Veri boyutu | 4 bayt | Metin veya görüntü verisinin boyutu |
Sayısal alanlar ağ bayt sırasıyla gönderilir. Önce sabit üst bilgi, ardından görüntü dosya adı ve veri gönderilir. TCP'de tek bir send veya recv çağrısının tüm veriyi taşıyacağı varsayılmaz.
- Metin: en fazla 1 MB
- Görüntü: en fazla 50 MB
- Desteklenen görüntü türleri: JPG ve PNG
- Yerel test adresi:
127.0.0.1
Uygulama aşağıdaki temel senaryolarla test edilmiştir:
- Kısa ve Türkçe metin gönderimi
- İstemciden sunucuya görüntü gönderimi
- Sunucudan istemciye görüntü gönderimi
- Ardışık görüntü gönderimi
- Alınan görüntünün VS Code görüntüleyicisinde açılması
- Aynı isimli dosyanın üzerine yazılmasının engellenmesi
Bu çalışmada grup sohbeti, kullanıcı hesabı, mesaj geçmişi, grafik arayüz, şifreleme ve internet üzerinden güvenli iletişim bulunmamaktadır. Uygulama aynı bilgisayardaki yerel TCP testleri için hazırlanmıştır.
Bu proje ders ödevi kapsamında hazırlanmıştır.