C++
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.
Örnek çözümü göster
#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;
}
Kendini test et
-
Boost.Asio'nun temel avantajı nedir?
- Daha küçük dosya üretir
- Daha az kod satırı
- Eşzamansız ve engellemeyen işlem
- Yalnızca Windows'ta çalışır
Cevabı göster
Eşzamansız ve engellemeyen işlem — Asio, eşzamansız modeliyle tek iş parçacığında çok bağlantı yönetir.
-
Parçayı rolüne eşle
- 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
-
io_context türünü tamamla
boost::asio::____ io;
Cevabı göster
boost::asio::io_context io;
Sıradaki ders: HTTP istemci