Asio ise network uygulamalarında kullanmak için geliştirilmiş Boost'un alt kütüphanesi diyebiliriz. Daha önce Winsock Kullanarak C++ ile Socket Programlama başlığında Boost'un kurulumunun uzun olduğu ve Intelisense'in saçmalamasına sebep olduğunu bahsetmiştim. Yeni versiyonlarla (1.55.0) bahsettiğim ikinci sorun düzelmiş gibi görünüyor ancak Intellisense'in tepkisi yine biraz yavaş.
Öncelikle Windows 8 ve Visual Studio 2012 yüklü bir makinede Boost kurulumunun nasıl gerçekleştirildiğine bakalım:
Video sonunda oluşturulan konfigüre edilmiş projenin bir kopyasını saklamanızı tavsiye ederim. Böylece yeni projeler için tekrar nasıl konfigüre ediyorduk diye düşünmek zorunda kalmazsınız.
Kod kısmına geldiğimizde ise elimizde bir client bir de server var. Tahmin edeceğiniz üzere server'dan gelecek veriyi client dinleyecek. Bunları yaparken senkron bir UDP bağlantısı kullanacak. Temel bir uygulama olması adına ben yalnızca aldığım veriyi ekrana yazdırmayı tercih ettim.
Kodlaru şu şekilde: (Yorum satırlarını okursanız anlaşılır olacağını düşünüyorum.)
SyncUDPServer.cpp
SyncUDPClient.cpp
Burdaki örneği alıp Visual Studio'da compile ettiğinizde client'a string'in gelmediğini farkedeceksiniz. Bunun sebebi client'ın komut satırı parametresi olarak (hatırlatma: argc, argv) host'un adresini istemesi. Bende iki program da aynı makinede çalıştığı için host'umun adresi "localhost".
"localhost" parametresini gönderirken ister komut satırından;
SyncUDPClient.exe localhost yazabilir parametreyi elle gönderebilirsiniz.
İsterseniz proje özelliklerinde küçük bir konfigürasyonla bu işi halledebilirsiniz:
Böylece Boost Asio ile temel düzeyde, senkron çalışan, UDP üzerinden haberleşen sender ve receiver fonksiyonları yazmış olduk.
Hiç yorum yok:
Yorum Gönder