C++ Üzerinde Soket Programlama

C dili ile ilgili onlarca kitap yayınlanmasına rağmen soket programlama konusuna hiç değinilmez. Tamamen derleyici eklentisi olan Turbo C++ grafik pakedi bile C kitaplarının %90 ında bulunur.

Bu dökümana başlama sebeplerimden birisi de budur. Soklet programlama ile ilgili internette az da olsa kaynak bulabilirsiniz ancak yazılan örnek programlar aşırı basit olduğu için öğrenilen birkaç şey de hemen unutuluyor ve birçok kişi ciddi bir uygulama yazamadan bu işten soğuyor.

Yani bu dökümanın amacı adam gibi, işe yarar programlar yazabilecek kadar soket programlama bilgisi ve örnekleri vermektir.

Soket programlama fonksiyonları ansi c de olmasa da sistemden bağımsızdır, yani windows da yazılmış bir soket program birkaç küçük değişiklikle linux da, bsd de ya da solaris de çalıştırılabilir.

Program yazmaya başlamadan önce hangi derleyiciyi kullanacağınıza karar vermelisiniz, Turbo C demeyin sakın, borland firması bile müzeye koydu biz hala  Turbo C ile 16 bit dos programı yazıyoruz. Neyse ben en sık kullanılan iki C derleyicisine göre anlatayım.

Eğer Dev-Cpp idesini kullanıyorsanız GCC derleyicisini kullanıyorsunuz demektir. GCC de kütüphane dosyası eklemek için –l  anahtarını kullanmanız gerekir. Bunun için Dev-C++ da “araçlar/derleyici ayarları” yazan  yere geliyoruz ve “Derleyiciyi çağırırken komut satırına şunları ekle” yazan yeri işaretliyoruz. Altındaki boşluğa ise “-lwsock32” yazıyoruz.

Evet artık Dev-C++ da soket programlama yapabilirsiniz.

Diğer çok kullanılan derleyici Visual C++ da ise “project/settings/link/” yazan yere gelip, “object-library modules” yazan yerin en sonuna bir boşluk bırakıp “wsock32.lib” yazıyoruz. Olay bukadar.

Ben dev-cpp de kod yazmayı tercih ediyorum, hem ide’yi, renklendirmeleri, kendinize göre ayarlıyabiliyorsunuz, hemde tamamen Türkçe ayrıca gcc derleyicisini kullanıyor. Linux altında da bu derleyiciyi kullandığımız için programınızın taşınabilirliği de artıyor. (derleyici eklentilerini kullanırsak)

Evet artık gerçekten başlayabiliriz. Kısaca soket programlama nedir ne değildir ondan bahsedeyim.

Soket programlama kısaca Ağ programlama olarak açıklana bilir, yani yerel ağ ya da internet ağı için program yazıyorsanız bu program soket program oluyor.

Soketler internete bağlanmak için kullanılan nesnelerdir. İnternete bağlanan tüm programlar soketleri kullanır. Soketler aslında işletim sistemi tarafından birer dosya olarak görülür.

Mesela tahribat.com a programımızdan bağlanmak istiyoruz, bu durumda soketimize sunucu adını ve bağlanmak istediğimiz portu bildirirz ve bağlan deriz, sonra ister veri yollar ister veri çekeriz.  Her soketle tek sunucuya veya istemciye bağlanabiliriz, eğer sunucuysak birden fazla istemci ile bağlantı kurmamız gerekecektir. Bu durumda tüm istemciler için ayrı birer soket açmak durumundayız.

Eğer amacınız bir client-server programı yazmak ise (trojanlar da bu gruba girer) istemci programları visual basic gibi daha yüksek seviye bir dilde yazmanızı tavsiye ederim. Mesela bir chat programı yazacaksanız, asıl işi yapan sunucu programı C ile yazarsınız ve shell hesabınızdan ya da çok kişi bağlanmayacaksa kendi bilgisayarınızdan çalıştırırsınız,  istemcileri de görsel programlama dillerinden birinde yazarsınız, tabi benim gibi konsol da chat yapmakdan zevk alıyorsanız orasını bilmem.

Aslında borland C++ 6 ile visual basic kadar hata bence daha kolay bir şekilde görsel programlar yazarsınız ancak  ben C ile öyle pencereli programlar yazmaktan hoşlanmıyorum.

C sistemler üstü bir dil olduğu için ve işletim sistemleri onunla yazıldığı için C de yadığınız kodun taşınabilir olması daha iyidir.  Siz iyisimi istemciyi visual basic de yazın, bende öyle yapacam  J

Bu kadar teorik bilgiden sonra artık birşeyler karalayabiliriz sanırım..

Windows programcıları windows.h dosyasını eklemeliler, aslında winsock.h dosyasını eklemek kafi ancak zaten windows.h dosyası bu dosyayı da ekliyor, hem apileri de kullanacak olursak birdaha ekleme derdimiz olmaz.

Tarih:
Hit: 10580
Yazar: Tugberk



Yorumlar


Siftahı yapan siz olun
Yorum yapabilmek için üye girişi yapmalısınız.