Windows Yuvaları: Sınıfı Kullanma CAsyncSocket
Bu makalede sınıfının CAsyncSocket
nasıl kullanılacağı açıklanmaktadır. Bu sınıf, Windows Yuvaları API'sini çok düşük bir düzeyde kapsüller. CAsyncSocket
, ağ iletişimini ayrıntılı olarak bilen ancak ağ olaylarının bildirimi için geri çağırma kolaylığı sağlamak isteyen programcılar tarafından kullanılır. Bu varsayıma bağlı olarak, bu makalede yalnızca temel yönergeler sağlanır. Bir MFC uygulamasında Windows Yuvaları'nın birden çok ağ protokolüyle başa çıkma kolaylığını istiyorsanız ancak esnekliğinden ödün vermek istemiyorsanız kullanmayı düşünmelisiniz CAsyncSocket
. Ayrıca, daha genel alternatif sınıf CSocket
modelini kullanabileceğinizden daha doğrudan iletişimleri programlama yoluyla daha iyi verimlilik elde edebileceğinizi de düşünebilirsiniz.
CAsyncSocket
MFC Başvurusu'nda belgelenmiştir. Visual C++ ayrıca Windows SDK'sında bulunan Windows Yuvaları belirtimini de sağlar. Ayrıntılar size bırakılır. Visual C++ için CAsyncSocket
örnek bir uygulama sağlamaz.
Ağ iletişimleri hakkında yüksek düzeyde bilgi sahibi değilseniz ve basit bir çözüm istiyorsanız sınıfını CSocket
bir CArchive
nesneyle kullanın. Daha fazla bilgi için bkz . Windows Yuvaları: Yuvaları Arşivlerle Kullanma.
Bu makalede aşağıdakiler ele alınmaktadır:
Nesne oluşturma ve kullanma
CAsyncSocket
.ile
CAsyncSocket
sorumluluklarınız.
Oluşturma ve kullanma CAsyncSocket
Kullanmak için CAsyncSocket
Bir
CAsyncSocket
nesne oluşturun ve temel tanıtıcıyıSOCKET
oluşturmak için nesnesini kullanın.Bir yuvanın oluşturulması, iki aşamalı inşaatın MFC desenini izler.
Örnek:
CAsyncSocket sock; sock.Create(); // Use the default parameters
-veya-
CAsyncSocket *pSocket = new CAsyncSocket; int nPort = 27; pSocket->Create(nPort, SOCK_DGRAM);
Yukarıdaki ilk oluşturucu yığında bir
CAsyncSocket
nesne oluşturur. İkinci oluşturucu yığında birCAsyncSocket
oluşturur. Yukarıdaki ilkCreate
çağrı, bir akış yuvası oluşturmak için varsayılan parametreleri kullanır. İkinciCreate
çağrı, belirtilen bağlantı noktası ve adrese sahip bir veri birimi yuvası oluşturur. (İki sürümü deCreate
yapı yöntemiyle kullanabilirsiniz.)Create
parametreleri şunlardır:"Bağlantı noktası": kısa bir tamsayı.
Sunucu yuvası için bir bağlantı noktası belirtmeniz gerekir. İstemci yuvası için genellikle bu parametre için varsayılan değeri kabul eder ve bu da Windows Yuvaları'nın bir bağlantı noktası seçmesine olanak tanır.
Yuva türü:
SOCK_STREAM
(varsayılan) veyaSOCK_DGRAM
.veya
"128.56.22.8"
gibi"ftp.microsoft.com"
bir yuva "adresi".Bu, ağdaki İnternet Protokolü (IP) adresinizdir. Büyük olasılıkla her zaman bu parametre için varsayılan değere güveneceksiniz.
"Bağlantı noktası" ve "yuva adresi" terimleri Windows Yuvaları: Bağlantı Noktaları ve Yuva Adresleri bölümünde açıklanmıştır.
Yuva bir istemciyse, kullanarak yuva nesnesini bir sunucu yuvasına
CAsyncSocket::Connect
bağlayın.-veya-
Yuva bir sunucuysa, istemciden bağlanma girişimleri için yuvayı dinlemeye (ile
CAsyncSocket::Listen
) başlayacak şekilde ayarlayın. Bir bağlantı isteği aldıktan sonra ile kabulCAsyncSocket::Accept
edin.Bir bağlantıyı kabul ettikten sonra parolaları doğrulama gibi görevler gerçekleştirebilirsiniz.
Dekont
Accept
Üye işlevi, parametresi olarak yeni, boşCSocket
bir nesneye başvuru alır. çağırmadanAccept
önce bu nesneyi oluşturmanız gerekir. Bu yuva nesnesi kapsamın dışına çıkarsa, bağlantı kapanır. Bu yeni yuva nesnesi için çağrıCreate
yapmayın. Bir örnek için Windows Yuvaları: İşlem Dizisi makalesine bakın.Nesnenin
CAsyncSocket
Windows Yuvaları API işlevlerini kapsülleyen üye işlevlerini çağırarak diğer yuvalarla iletişim gerçekleştirin.MFC Başvurusu'ndaki Windows Yuvaları belirtimine ve sınıfına
CAsyncSocket
bakın.Nesneyi yok edin
CAsyncSocket
.Yuva nesnesini yığında oluşturduysanız, içeren işlev kapsamın dışına çıktığında yok edicisi çağrılır. Yığında yuva nesnesini işlecini
new
kullanarak oluşturduysanız, nesnesini yok etmek için işlecinidelete
kullanmak sizin sorumluluğundadır.Yıkıcı, nesneyi yok etmeden önce nesnenin
Close
üye işlevini çağırır.
Kodda (aslında bir CSocket
nesne için) bu sıranın bir örneği için bkz . Windows Yuvaları: İşlem Dizisi.
ile ilgili sorumluluklarınız CAsyncSocket
sınıfının CAsyncSocket
bir nesnesini oluşturduğunuzda, nesnesi bir Windows SOCKET
tanıtıcısını kapsüller ve bu tanıtıcı üzerinde işlemler sağlar. kullanırken CAsyncSocket
, API'yi doğrudan kullanıyorsanız karşılaşabileceğiniz tüm sorunlarla ilgilenmeniz gerekir. Örnek:
"Engelleme" senaryoları.
Gönderen ve alan makineler arasındaki bayt sırası farkları.
Unicode ve çok baytlı karakter kümesi (MBCS) dizeleri arasında dönüştürme.
Bu terimlerin tanımları ve ek bilgiler için bkz . Windows Yuvaları: Engelleme, Windows Yuvaları: Bayt Sıralama, Windows Yuvaları: Dizeleri Dönüştürme.
Bu sorunlara rağmen, uygulamanız alabileceğiniz tüm esnekliği ve denetimi gerektiriyorsa sınıf CAsyncSocket
sizin için doğru seçim olabilir. Aksi takdirde, bunun yerine sınıfını CSocket
kullanmayı göz önünde bulundurun. CSocket
sizden birçok ayrıntıyı gizler: Engelleme çağrıları sırasında Windows iletilerini pompalar ve bayt sırası farklarını ve dize dönüştürmeyi yöneten öğesine erişmenizi CArchive
sağlar.
Daha fazla bilgi için bkz.
- Windows Yuvaları: Arka Plan\
- Windows Yuvaları: Akış Yuvaları\
- Windows Yuvaları: Veri Birimi Yuvaları
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin