Windows Sockets: Odvozování z tříd soketů
Tento článek popisuje některé z funkcí, které můžete získat odvozením vlastní třídy z jedné z tříd soketů.
Vlastní třídy soketů můžete odvodit z CAsyncSocket nebo CSocket a přidat tak vlastní funkce. Konkrétně tyto třídy poskytují řadu virtuálních členských funkcí, které můžete přepsat. Mezi tyto funkce patří OnReceive, OnSend, OnAccept, On Připojení a OnClose. Funkce v odvozené třídě soketu můžete přepsat, abyste mohli využít oznámení, která poskytují při výskytu síťových událostí. Architektura volá tyto funkce zpětného volání oznámení, které vás upozorní na důležité události soketů, jako je příjem dat, která můžete začít číst. Další informace o funkcích oznámení naleznete v tématu Windows Sockets: Socket Notifications.
Kromě toho třída CSocket
poskytuje OnMessagePending členské funkce (pokročilé přepisovatelné). MFC volá tuto funkci, zatímco soket pumpuje zprávy založené na systému Windows. Pokud chcete vyhledat konkrétní zprávy z Windows, můžete je přepsat OnMessagePending
a odpovědět na ně.
Výchozí verze OnMessagePending
zadaná ve třídě CSocket
zkoumá frontu zpráv pro WM_PAINT zprávy při čekání na dokončení blokujícího volání. Odesílá zprávy malování za účelem zlepšení kvality zobrazení. Kromě toho, že uděláte něco užitečného, je to jeden ze způsobů, jak můžete funkci přepsat sami. Jako další příklad zvažte použití OnMessagePending
pro následující úlohu. Předpokládejme, že při čekání na dokončení síťové transakce zobrazíte dialogové okno bez režimu. Dialogové okno obsahuje tlačítko Zrušit, které uživatel může použít ke zrušení blokujících transakcí, které trvá příliš dlouho. Přepsání OnMessagePending
může čerpat zprávy související s tímto bezmodálním dialogovým oknem.
OnMessagePending
V přepsání vraťte hodnotu TRUE nebo návrat z volání do základní třídy verze OnMessagePending
. Pokud provádí práci, kterou chcete přesto provést, zavolejte verzi základní třídy.
Další informace naleznete v tématu: