C++ ile sistem ve ağ programlama
POSIX arayüzlerini RAII sınıflarıyla güvenle sarar, soket ve Asio ile eşzamanlı ağ servisleri ve araçları yazarsın.
Seviye 301 · 18 ders · 15 pratik lab
Dersler
Sistem arayüzleri
- RAII ile dosya tanımlayıcı sarmalayıcı
- C++’tan süreç başlatmak ve çıktısını okumak
- Sinyaller ve düzgün kapanış
- Bellek eşlemeli dosyayı span ile okumak
- Kısa görev: kabuk kullanmadan komut çalıştıran sınıf
Soketler
- Soket sınıfı: taşınabilir ama kopyalanamaz
- TCP istemcisi ve sunucusu
- Tamponlar ve mesaj çerçeveleme
- UDP ile bildirim gönderip almak
- poll ile olay döngüsü
- Kısa görev: anahtar-değer sunucusu
Asio ile asenkron G/Ç
- Asio temelleri: io_context ve zamanlayıcılar
- Asenkron TCP sunucusu
- Asio ve eşyordamlarla okunur asenkron kod
- Asio ile TLS ve sertifika doğrulama
- Basit HTTP istemcisi ve zaman aşımları
- Kısa görev: lab hedeflerini eşzamanlı yoklayan araç
Bitirme
- Bitirme görevi: sınırları ve günlüğü olan asenkron TCP aktarıcı
Pratik lablar
- Dosya tanımlayıcısına taşınabilir sarmalayıcı yazmak: Tanımlayıcıyı yıkıcıda kapatan, kopyalanamayan ve taşındıktan sonra iki kez kapatmayan bir sınıf yaz.
- Bellek eşlemeli dosyayı span ile taramak: Sabit boyutlu kayıtlardan oluşan dosyayı mmap ile eşle, std::span üzerinden gez ve eşlemeyi RAII ile kaldır; yarım son kaydı reddet.
- Sinyalde kaynakları bırakarak kapanmak: Sinyal işleyicisinde güvenli olmayan çağrılar yapan hizmeti atomik bayrak ve ana döngü denetimiyle düzelt; yıkıcıların çalıştığını testle göster.
- Programı fork ve exec ile çalıştırıp çıktısını almak: Argüman vektörüyle bir programı fork ve exec ile çalıştır, standart çıktısını boru üzerinden dizgiye topla ve çıkış kodunu döndür.
- Asılı kalan komutu süre dolunca sonlandırmak: Komut çalıştırıcıya zaman aşımı ekle; süre dolunca çocuğu sonlandır, zombi bırakma ve tanımlayıcıların kapandığını doğrula.
- system çağrısını argüman vektörüne taşımak: Dosya adını komut dizgisine ekleyip system ile çalıştıran yedekleme sınıfını kabuksuz çalıştırıcıya taşı; özel karakterli adlarla regresyon testlerini geç.
- Soket sınıfıyla yankı istemcisi: Bağlanma, gönderme ve alma işlevleri olan taşınabilir soket sınıfını tamamla ve yerel yankı sunucusuyla testleri geç.
- Uzunluk önekli iletileri çerçevelemek: Parça parça gelen baytlardan tam iletileri çıkaran çerçeveleyiciyi yaz; azami boyutu aşan iletide bağlantıyı reddet.
- poll ile çok istemcili anahtar-değer sunucusu: Tek iş parçacıklı poll döngüsüyle GET ve SET komutlarını işleyen sunucuyu yaz; yavaş istemci diğerlerini bekletmemeli ve kısmi yazmalar tamamlanmalı.
- Asio zamanlayıcısıyla kalp atışı: steady_timer ile her saniye sayaç artıran ve beş atıştan sonra kendini durduran eşzamansız kalp atışını yaz.
- Oturum nesnesinin ömrünü doğru yönetmek: Geri çağrı çalışmadan yok edilen oturum yüzünden çöken eşzamansız sunucuyu shared_from_this ile düzelt ve ASan testini geç.
- Lab hedeflerini eşyordamlarla eşzamanlı yoklamak: İzin listesindeki lab hedeflerine Asio eşyordamlarıyla eşzamanlı bağlan; her bağlantıya zaman aşımı koy ve erişilebilirlik tablosunu üret.
- HTTP durum satırını okumak: Lab web hedefine basit bir GET isteği gönderip durum kodunu ve Content-Length başlığını döndüren istemciyi yaz.
- HTTP istemcisine süre sınırları eklemek: Yanıt vermeyen sunucuda sonsuza dek bekleyen istemciye bağlanma, okuma ve toplam süre sınırları ekle; her birini ayrı hata olarak bildir.
- TLS istemcisinde sertifika doğrulamasını açmak: Doğrulamayı kapatmış Asio TLS istemcisini lab iç sertifika yetkilisine güvenecek ve ana makine adını denetleyecek şekilde düzelt; yanlış adlı sunucuya bağlanmadığını göster.
Kurs hakkında
POSIX arayüzlerini RAII sınıflarıyla güvenle sarar, soket ve Asio ile eşzamanlı ağ servisleri ve araçları yazarsın.
Ne öğreneceksin
- Sistem arayüzleri
- Soketler
- Asio ile asenkron G/Ç
- Bitirme
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde ve ona bağlı özel bir lab ağında geçer. Kurulum gerekmez.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.