Windows Yuvaları: Yuva arşivleri ile kullanma
Bu makalede, CSocket programlama modeli. Sınıf CSocket sağladığı soyutlama daha yüksek düzeyde destek socket sınıfı göre CAsyncSocket. CSocketmfc seri hale getirme protokolü sürümü yuva nesnesi bir mfc arasında veri iletmek için kullandığı CArchive nesnesi. CSocket(arka plan işleme Windows iletilerini yönetme sırasında) engelleme sağlar ve aşağıdakilere erişmenizi CArchive, birçok yönlerini ham API veya sınıf kullanarak kendiniz yapmak zorunda iletişimi yöneten CAsyncSocket.
İpucu
Sınıfını kullanabilirsiniz CSocket , daha uygun bir sürümü olarak kendisi tarafından CAsyncSocket, ancak basit bir programlama modeli kullanmak için CSocket ile bir CArchive nesnesi.
Arşivler ile yuva uygulaması nasıl çalıştığı hakkında daha fazla bilgi için bkz: Windows Yuvaları: Yuva arşivleri ile nasıl çalışır?. Örnek kod için bkz: Windows Yuvaları: Operasyon dizisi ve Windows Yuvaları: Yuva arşivleri kullanma örneği. Kazanç kendi sınıflarınızı yuva sınıflardan türetmek tarafından işlevselliği hakkında bilgi için bkz: Windows Yuvaları: Yuva sınıflardan türetmek.
Not
Kurulu (olmayan-mfc) sunucularıyla iletişim kurarken mfc istemci program yazıyorsanız, C++ nesneleri arşiv yoluyla göndermeyin.Göndermek istediğiniz nesnelerin türlerini anladığı bir mfc uygulaması sunucusudur sürece alabilir ve nesneleri serisini mümkün olmaz.mfc uygulamalarla iletişimde konu hakkında ilgili malzeme de makalesine bakın Windows Yuvaları: Bayt sırası.
CSocket programlama modeli
Kullanarak bir CSocket nesnesi oluşturup birlikte birkaç mfc sınıf nesneleri ilişkilendirerek kapsar. Aşağıdaki genel yordamda her adımı sunucusu yuva ve her yuva türü farklı bir eylem gerektiren istemci yuvası, adım 3 ' ü haricinde'tarafından alınır.
İpucu
Çalışma zamanında sunucu uygulaması genellikle ilk hazır ve "istemci uygulaması bağlantı yararlanılabileceğini, dinleme" başlar.İstemci bağlanmaya çalışırken, sunucu hazır değilse, genellikle daha sonra yeniden bağlanmayı denemek için kullanıcı uygulamayı gerektirir.
İstemci soket sunucusu yuva arasındaki iletişimi kurmak için
Yapısı bir CSocket nesnesi.
Nesnenin temel oluşturmak için kullanmak YUVA işleyecek.
İçin bir CSocket istemci nesne, varsayılan parametreler normalde kullanmalıdır Create, datagram soket gerekmedikçe. İçin bir CSocket sunucu nesnesi belirtmeniz gerekir, bir bağlantı noktası Create çağırın.
Not
CArchiveDatagram yuva ile çalışmaz.Kullanmak istiyorsanız, CSocket bir datagram soket için kullanacağınız gibi sınıf kullanmalısınız CAsyncSocket, başka bir deyişle arşiv olmadan.Datagramları güvenilir olduğundan (ulaşmaları garanti ve yinelenebilir veya sırasız), bir arşiv ile seri hale getirme ile uyumlu değildir.Güvenilir ve sıra tamamlamak için seri hale getirme işlemi beklediğiniz.Kullanmaya çalışırsanız CSocket ile bir CArchive nesnesi bir veri birimi bir mfc onaylama işlemi başarısız olur.
Yuva istemcisiyse çağrısı CAsyncSocket::Connect sunucusu yuva yuva nesnesi bağlanma.
-veya-
Yuva bir sunucuysa, çağrı CAsyncSocket::Listen başlamak için bir istemciden bağlantı girişimleri dinleme. Bağlantı isteğini aldıktan sonra çağırarak kabul CAsyncSocket::Accept.
Not
Kabul üye işlev yeni, boş bir başvuru alır CSocket , parametre olarak bir nesne.Bu nesne, aramadan önce oluşturmalıdır kabul.Bu yuva nesnesi kapsam dışına çıkarsa, bağlantıyı kapatır.Çağrılmayan Create bu yeni yuva nesnesi.
Oluşturma bir CSocketFile nesne ilişkilendirme CSocket , nesne.
Oluşturma bir CArchive yükleme (alma) veya (gönderen) verilerini depolamak için nesne. Arşiv ile ilişkili CSocketFile nesnesi.
Unutmayın CArchive datagram yuva ile çalışmaz.
Use CArchive nesnesi, istemci ve sunucu yuvaları arasında veri iletmek için.
Unutmayın bir verilen CArchive nesne yalnızca bir yönde veri taşır: yükleme (alma) veya (gönderen) saklamak için. Bazı durumlarda, iki kullanacağınız CArchive nesneler: bir bildirim almak için başka bir veri gönderme.
Bağlantı kabul etmesini ve arşiv ayarlama sonra parola doğrulama gibi görevleri gerçekleştirebilirsiniz.
Arşiv, soket dosyası ve yuva nesnesi yok.
Not
Sınıf CArchive kaynakları IsBufferEmpty üye işlev sınıfı ile kullanılmak üzere özel olarak CSocket.Örneğin, arabellek birden çok veri iletileri varsa, bunların tümünü okuyun ve arabellek temizlenmiş kadar döngü gerekir.Aksi takdirde alınacak veri olduğunu, sonraki bildirim sonsuza kadar gecikebilir.Use IsBufferEmpty sağlanması tüm verileri almak için.
Makale Windows Yuvaları: Operasyon dizisi iki örnek kod ile bu işlemi göstermektedir.
Daha fazla bilgi için bkz: