Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows Soketler: Sınıf Kullanma
Bu makalede sınıfının CAsyncSocketnası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. Windows Yuvaları'nın birden çok ağ protokolüyle başa çıkma kolaylığını bir MFC uygulamasında istiyor ancak esneklikten ödün vermek istemiyorsanız, muhtemelen CAsyncSocket kullanmayı düşünmelisiniz. Ayrıca, daha genel alternatif sınıf CSocket modelini kullanmaktan ziyade, iletişimleri daha doğrudan programlayarak daha iyi bir verimlilik elde edebileceğinizi düşünebilirsiniz.
CAsyncSocket
MFC Referansında belgelenmiştir. Visual Studio, Windows SDK içinde bulunan Windows Sockets spesifikasyonunu da sağlar. Ayrıntılar size bırakılır. Visual Studio 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 Soketleri: Soketleri Arşivlerle Kullanma.
Bu makale şunları kapsar:
CAsyncSocketnesnesi oluşturma ve kullanma.
Bir CAsyncSocket oluşturma ve kullanma
Kullanmak için CAsyncSocket
Bir
CAsyncSocketnesnesi oluşturun ve bu nesneyi kullanarak altta yatanSOCKETtanıtıcısını oluşturun.Bir soketin oluşturulması, iki aşamalı yapılandırmanın MFC şablonunu izler.
Örneğin:
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
CAsyncSocketnesne oluşturur. İkinci oluşturucu yığında birCAsyncSocketoluş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ü deCreateyapı yöntemiyle kullanabilirsiniz.)Createparametreleri şunlardır:"Bağlantı noktası": kısa 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
"ftp.microsoft.com"gibi"128.56.22.8"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,
CAsyncSocket::Connectkullanarak yuva nesnesini bir sunucu yuvasına bağlayın.-veya-
Yuva bir sunucuysa, istemciden gelecek bağlantı girişimlerini dinlemeye başlasın diye yuvayı (
CAsyncSocket::Listenile) ayarlayın. Bir bağlantı isteği aldığınızda,CAsyncSocket::Acceptile kabul edin.Bir bağlantıyı kabul ettikten sonra parolaları doğrulama gibi görevler gerçekleştirebilirsiniz.
Uyarı
AcceptÜye işlevi, parametresi olarak yeni, boşCSocketbir 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ıCreateyapmayın. Bir örnek için Windows Yuvaları: İşlem Dizisi makalesine bakın.Nesnenin
CAsyncSocketWindows Yuvaları API işlevlerini kapsülleyen üye işlevlerini çağırarak diğer yuvalarla iletişim gerçekleştirin.Windows Sockets spesifikasyonu ve
CAsyncSocketsınıfına MFC Başvurusu'ndaki 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ığın üzerinde
newoperatörünü kullanarak soket nesnesini oluşturduysanız, bu nesneyi yok etmek içindeleteoperatörünü kullanmak sizin sorumluluğunuzdadı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.
Sizin CAsyncSocket ile ilgili sorumluluklarınız
Sınıfının CAsyncSocket bir nesnesini oluşturduğunuzda, nesne bir Windows SOCKET tanıtıcısını kapsüller ve bu tanıtıcı üzerinde işlemler sağlar. "CAsyncSocket'yi kullanırken, API'yi doğrudan kullanıyorsanız karşılaşabileceğiniz tüm sorunlarla ilgilenmeniz gerekir." Örneğin:
"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 birçok ayrıntıyı sizden gizler: Engelleme çağrıları sırasında Windows iletilerini işler ve bayt sırası farklarını ve dize dönüştürmeyi yöneten CArchive'e erişim sağlar.
Daha fazla bilgi için bkz:
- Windows Soketleri: Arka Plan
- Windows Soketler: Akış Soketleri
- Windows Yuvaları: Veri Birimi Yuvaları