CodeBlanks Logo Icon CodeBlanks

Boost.Asio

Boost.Asio ile asenkron ağ programlama öğrenirsin.

Boost.Asio nedir?

Boost.Asio, C++ için platformlar arası bir eşzamansız (asynchronous) G/Ç kütüphanesidir. Hem ağ hem de zamanlayıcı işlemleri için kullanılır. POSIX soketlerinden farklı olarak engellemeyen (non-blocking) işlem modeli sunar; böylece tek iş parçacığıyla binlerce bağlantı yönetilebilir.

Temel bileşenler: boost::asio::io_context olay döngüsü (event loop), tcp::socket soket, tcp::acceptor sunucu kabulcüsü. Örnek: boost::asio::io_context io; boost::asio::ip::tcp::socket sock(io);. İşlemler async_read, async_write gibi geri aramalı (callback) metotlarla başlatılır. io.run() olay döngüsünü çalıştırır. Bu derste temel kurulumu göreceğiz.

io_context ve tcp::socket

boost::asio::io_context, Asio'nun kalbidir: tüm eşzamansız işlemleri yöneten olay döngüsüdür. Bir soket ya da zamanlayıcı oluştururken io_context'e bağlarsın. İşlemler başlatılır ama hemen bitmez; io.run() çağrılınca tamamlanır.

Örnek: boost::asio::io_context io; boost::asio::ip::tcp::socket sock(io);. Burada sock, io'ya bağlıdır; tüm işlemleri io yönetir. Eşzamansız işlem başlatmak için sock.async_write_some(buffer, handler) gibi metotlar kullanılır. handler, işlem tamamlandığında çağrılan geri aramadır (lambda olabilir). io.run() bekleyen tüm işlemleri çalıştırır.

Uygulama Asio soketi oluştur

#include <boost/asio.hpp> ekle. boost::asio::io_context io; tanımla. boost::asio::ip::tcp::socket sock(io); ile soket oluştur. std::cout << "Asio hazır"; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// Boost.Asio başlığını ve io_context'i ekle

int main() {
    // io_context ve tcp::socket oluştur
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <boost/asio.hpp>

int main() {
    boost::asio::io_context io;
    boost::asio::ip::tcp::socket sock(io);
    std::cout << "Asio hazır";
    return 0;
}

Beklenen çıktı

Asio hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boost.Asio'nun temel avantajı nedir?

  • Daha küçük dosya üretir
  • Daha az kod satırı
  • Eşzamansız ve engellemeyen işlem Doğru cevap
  • Yalnızca Windows'ta çalışır

Açıklama: Asio, eşzamansız modeliyle tek iş parçacığında çok bağlantı yönetir.

2 Parçayı rolüne eşle

Kavram Anlamı
boost::asio::io_context Olay döngüsü
tcp::socket Soket
tcp::acceptor Bağlantı kabul
io.run() Döngüyü çalıştırır

3 io_context türünü tamamla

Soru
boost::asio::____ io;
Cevap
boost::asio::io_context io;

Açıklama: boost::asio::io_context olay döngüsünü tanımlar.

İleri seviye bölümündeki tüm dersler