Boost.Asio
- C++ kursu
- İleri seviye
- Ders 58/83
- 5 dk
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
#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
#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
boost::asio::____ io;
boost::asio::io_context io;
Açıklama: boost::asio::io_context olay döngüsünü tanımlar.