Windows Programcılarının Dikkat Etmesi Gerekenler
Önceki Giriş Sonraki
Windows Programcılarının Dikkat Etmesi Gerekenler
Windows'dan pek hoşlandığım söylenemez bu yüzden de bu belgeyi okuyan tüm Windows programcılarını GNU/Linux, BSD ya da UNIX denemeye davet ediyorum. Bu laflardan sonra, evet, örnek kodları Windows üzerinde kullanma imkanınız var.
Öncelikle burada bahsettiğim birçok sistem başlık dosyasını unutun. Tek yapmanız gereken aşağıdakileri programınıza katmak:
#include <winsock.h>
Bir dakika! Aynı zamanda WSAStartup() işlevini de soket kitaplıkları ile herhangi bir iş yapmadan önce çağırmanız gerekiyor. Bunu yapmak için gerekli kod şöyle bir şey:
#include <winsock.h>

{
    WSADATA wsaData;   // if this doesn't work
    //WSAData wsaData; // then try this instead

    if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
        fprintf(stderr, "WSAStartup failed.\n");
        exit(1);
    }
Tabii derleyicinize Winsock'u da bağlamasını söylemelisiniz. Bunun için gerekli dosyanın ismi genellikle şudur: wsock32.lib veya winsock32.lib veya benzer bir şey. VC++ ortamında iseniz, bunun için Project menüsünden, Settings... kısmına gidin ve Link sekmesine gelip Object/library modules kutusunu bulun. wsock32.lib dosyasını bu listeye ekleyin.
En azından ben böyle duydum.
Ve son olarak da WSACleanup() işlevini çağırmanız gerekir soket kitaplığı ile işiniz bittiğinde. Ayrıntılı bilgi için derleyicinizin yardım belgelerine bakın.
Bunu yaptığınızda bu belgedeki örneklerin hemen hepsi genel olarak çalışabilir durumda olmalı belki birkaç küçük değişiklik yapmanız gerekebilir ama hepsi bu. Dikkat etmeniz gerekenler: Soketi kapatmak için close() işlevini kullanamazsınız -- bunun için closesocket() işlevini kullanmalısınız. Ayrıca select() işlevi sadece soket tanımlayıcılar içindir, dosya tanımlayıcılar (standart girdi için 0 kullanılması gibi) için değildir.
Aynı zamanda, CSocket isimli bir soket sınıfı da mevcuttur. Ayrıntılı bilgi için derleyicinizin belgelerini karıştırın.
Winsock hakkında ayrıntılı bilgi için şu adrese bakabilirsiniz: Winsock FAQ
Son olarak da bildiğim kadarı ile Windows ortamında fork() isimli işlev yok ve maalesef örneklerde bu işlevi kullanmak durumdayım. Belki de bir POSIX kitaplığına programınızı bağlamanız gerekebilir veya CreateProcess() işlevini kullanabilirsiniz. fork() işlevi herhangi bir argüman almaz ama CreateProcess() işlevi 48 milyar argüman alır. Eğer bu gözünüzü biraz korkuttu ise CreateThread() işlevi biraz daha kolay bir alternatif olabilir ancak "multithreading" tartışması bu belgenin sınırlarının ötesindedir. Windows konusunu böylece burada kapatıyoruz!
Önceki Üst Ana Başlık Sonraki
Solaris/SunOS Programcılarının Dikkat Etmesi Gerekenler Başlangıç E-posta Politikası
Bir Linux Kitaplığı Sayfası