Aracılığıyla paylaş


Windows Sockets: Soket Bildirimleri

Uyarı

Microsoft Foundation Sınıfları (MFC) kitaplığına destek verilmeye devam ediliyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

Bu makalede yuva sınıflarındaki bildirim işlevleri açıklanmaktadır. Bu üye işlevler, framework'ün önemli olayları nesnenize iletmek için çağırdığı geri çağırma işlevleridir. Bildirim işlevleri şunlardır:

  • OnReceive: Bu sokete Receive çağrısı yaparak arabellekte alınması gereken veri olduğunu bildirir.

  • OnSend: Bu yuvaya Send işlevini çağırarak artık veri gönderebileceğini bildirir.

  • OnAccept: Bu dinleme yuvasını Accept çağırarak bekleyen bağlantı isteklerini kabul edebildiğini bildirir.

  • OnConnect: Bu bağlantı yuvasını bağlantı girişiminin tamamlandığını bildirir: başarılı veya belki de hatalı.

  • OnClose: Bu sokete bağlantılı olduğu soketin kapandığını bildirim verir.

    Uyarı

    Ek bir bildirim işlevi OnOutOfBandData'dır. Bu bildirim, alıcı yuvaya gönderen yuvada "bant dışı" gönderilecek veriler olduğunu bildirir. Bant dışı veriler, bağlı akış yuvalarının her çiftiyle ilişkili mantıksal olarak bağımsız bir kanaldır. Bant dışı kanal genellikle "acil" veriler göndermek için kullanılır. MFC bant dışı verileri destekler. CAsyncSocket sınıfıyla çalışan ileri düzey kullanıcıların bant dışı kanalı kullanması gerekebilir, ancak CSocket sınıfındaki kullanıcıların bunu kullanmaları önerilmez. Bunun daha kolay yolu, bu tür verileri geçirmek için ikinci bir yuva oluşturmaktır. Bant dışı veriler hakkında daha fazla bilgi için bakınız: Windows SDK'da bulunan Windows Sockets belirtimi.

CAsyncSocket sınıfından türetilirseniz, uygulamanızın ilgilendiğiniz ağ olayları için bildirim fonksiyonlarını geçersiz kılmanız gerekir. sınıfından CSocketbir sınıf türetirseniz, ilgilendiğiniz bildirim işlevlerini geçersiz kılmak sizin seçiminizdir. Ayrıca kendisini de kullanabilirsiniz CSocket ; bu durumda bildirim varsayılan olarak hiçbir şey yapmadan çalışır.

Bu işlevler geçersiz kılınabilir geri çağırma işlevleridir. CAsyncSocket ve CSocket iletileri bildirimlere dönüştürün, ancak kullanmak istiyorsanız bildirim işlevlerinin nasıl yanıt verdiğini uygulamanız gerekir. Bildirim işlevleri, okunacak veri gibi ilgi çekilen bir olay gerçekleştiğinde soketinize bildirildiği anda çağrılır.

MFC, bildirim geldiğinde yuvanızın davranışını özelleştirmenize olanak sağlamak için bildirim işlevlerini çağırır. Örneğin, okunacak veri olduğu bildirildiğinde bildirim işleviniz Receive içinde OnReceive çağrılabilir, yani bunu okumak için Receive çağrısı yapılır. Bu yaklaşım gerekli değildir, ancak geçerli bir senaryodur. Alternatif olarak ilerleme durumunu izlemek, TRACE iletilerini yazdırmak vb. için bildirim işlevinizi kullanabilirsiniz.

Türetilmiş bir soket sınıfındaki bildirim işlevlerini geçersiz kılıp uygulamasını sağlayarak bu bildirimlerden yararlanabilirsiniz.

Veri alma veya gönderme gibi bir işlem sırasında nesne CSocket zaman uyumlu hale gelir. Senkron durum sırasında, mevcut soket istediği bildirimi beklerken, diğer soketlere yönelik tüm bildirimler kuyruğa alınır. (Örneğin, bir Receive çağrısı sırasında yuva okunması gereken bir bildirim ister.) Yuva senkron işlemini tamamladıktan ve tekrar asenkron hale geldikten sonra, diğer yuvalar kuyruğa alınan bildirimleri almaya başlayabilir.

Uyarı

CSocket içinde OnConnectbildirim işlevi hiçbir zaman çağrılmaz. Bağlantılar için Connect'yi çağırırsınız, bağlantı tamamlandığında (başarıyla veya hatayla) döndürülecektir. Bağlantı bildirimlerinin nasıl işlenme şekli bir MFC uygulama ayrıntısıdır.

Her bildirim işlevi hakkında ayrıntılı bilgi için CAsyncSocket sınıfın altındaki işleve bakın. Kaynak kodu ve MFC örnekleri hakkında bilgi için bkz. MFC Örnekleri.

Daha fazla bilgi için bakınız:

Ayrıca bakınız

MFC'de Windows Sockets