Winsock ile çalışmaya başlama
Bu bölüm, Windows Yuvaları programlamasını kullanmaya başlamaya yönelik adım adım bir kılavuzdur. Temel Winsock işlevlerini ve veri yapılarını ve birlikte nasıl çalıştıklarını anlamak için tasarlanmıştır.
Bu konu başlığında çizim için kullandığımız istemci ve sunucu uygulaması çok temel bir istemci ve sunucudur. Microsoft Windows Yazılım Geliştirme Seti'ne (SDK) dahil edilen örneklere daha gelişmiş kod örnekleri dahildir.
İlk birkaç adım hem istemci hem de sunucu uygulamaları için aynıdır.
Aşağıdaki makalelerde Winsock istemci uygulaması oluşturmaya yönelik kalan adımlar açıklanmaktadır.
- İstemci için yuva oluşturma
- Yuvaya bağlanma
- İstemcide veri gönderme ve alma
- İstemci bağlantısını kesme
Aşağıdaki makalelerde Winsock sunucu uygulaması oluşturmaya yönelik kalan adımlar açıklanmaktadır.
- Sunucu için yuva oluşturma
- Bir soket bağlama
- Bir soketin dinlenmesi
- Bağlantı kabul etme
- Sunucu veri alma ve gönderme
- Sunucuyu bağlantısını kesme
Bu temel örneklerin tam kaynak kodu.
- Winsock istemcisini ve sunucu kodu örneğini çalıştırma
- Complete Winsock istemci kodu
- Tam Winsock sunucu kodu
Gelişmiş Winsock örnek uygulamaları
GitHub'da daha gelişmiş winsock istemci ve sunucu örnek uygulamaları mevcuttur. Bunlar burada daha yüksekten düşük performansa doğru sıralanmıştır ve aşağıdaki dizinlerde bulunur:
iocp
Bu klasör G/Ç tamamlama bağlantı noktalarını kullanan üç örnek program içerir. Programlar şunlardır:
iocpserver
, WSAAccept işlevini kullanan bir Winsock sunucusu;iocpserverex
, AcceptEx işlevini kullanan bir Winsock sunucusu; ve bu sunuculardan birini test etmek için kullanılan basit bir çok iş parçacıklı Winsock istemcisi,iocpclient
.Sunucu programları, TCP/IP kullanarak birden çok istemcinin bağlanmasını ve sunucunun istemciye geri yankılanması için rastgele boyutlu veri arabellekleri göndermeyi destekler. Kolaylık sağlamak amacıyla, sunucuya birden çok iş parçacığı kullanarak bağlanıp sürekli veri göndererek sunucuyu zorlamak için geliştirilen
iocpclient
adlı basit bir istemci programı oluşturulmuştur. G/Ç tamamlama bağlantı noktalarını kullanan Winsock sunucuları en yüksek performansı sağlar.Örtüşme
Bu klasör, çakışan G/Ç kullanan örnek bir sunucu programı içerir. Örnek program, istemcilerden gelen birden çok zaman uyumsuz bağlantı isteğini etkili bir şekilde işlemek için AcceptEx işlevini ve çakışan G/Ç'yi kullanır. Sunucu, tek iş parçacıklı bir Win32 uygulamasında farklı istemci bağlantılarının çoğulunu oluşturmak için AcceptEx işlevini kullanır. Çakışan G/Ç kullanılması daha fazla ölçeklenebilirlik sağlar.
WSAPoll
Bu klasör, WSAPoll işlevinin kullanımını gösteren temel bir örnek program içerir. Birleşik istemci ve sunucu programı engelleyici değil ve engelleme olmadan göndermenin veya almanın ne zaman mümkün olduğunu belirlemek için WSAPoll işlevini kullanın. Bu örnek çizim içindir ve yüksek performanslı bir sunucu değildir.
basit
Bu klasör, bir sunucu tarafından birden çok iş parçacığı kullanımını gösteren üç temel örnek program içerir. Programlar şunları içerir: basit bir TCP/UDP sunucusu,
simples
; birden fazla istemci istemini desteklemek için bir Win32 konsol uygulamasında select işlevini kullanan yalnızca TCP sunucusu,simples_ioctl
; ve sunucuları test etmek için bir istemci TCP/UDP programı,simplec
. Sunucular, birden çok istemci isteğini işlemek için birden çok iş parçacığının kullanımını gösterir. Her istemci isteği için ayrı bir iş parçacığı oluşturulduğundan bu yöntemin ölçeklenebilirlik sorunları vardır.kabul etmek
Bu klasör temel bir örnek sunucu ve istemci programı içerir. Sunucu, select işlevini kullanarak bloklamayan kabul veya WSAAsyncSelect işlevini kullanarak zaman uyumsuz kabul işlemini gösterir. Bu örnek çizim içindir ve yüksek performanslı bir sunucu değildir.