Windows Sockets: Oznámení soketů
Tento článek popisuje funkce oznámení ve třídách soketů. Tyto členské funkce jsou funkce zpětného volání, které rozhraní volá, aby upozorňují objekt soketu na důležité události. Funkce oznámení jsou:
OnReceive: Upozorní tento soket, že je v vyrovnávací paměti pro načtení voláním receive.
OnSend: Upozorní tento soket, že teď může odesílat data voláním odeslat.
OnAccept: Upozorní tento naslouchací soket, že může přijímat čekající žádosti o připojení voláním Accept.
Zapnuto Připojení: Upozorní tento spojovací soket, že se jeho pokus o připojení dokončil: možná úspěšně nebo pravděpodobně omylem.
OnClose: Upozorní tento soket, že je zásuvka, ke které je připojena, byla uzavřena.
Poznámka
Další oznamovací funkce je OnOutOfBandData. Toto oznámení informuje přijímající soket, že odesílající soket obsahuje "odchozí" data k odeslání. Odchozí data jsou logicky nezávislý kanál přidružený ke každému páru připojených soketů datových proudů. Kanál mimo pásmo se obvykle používá k odesílání "urgentních" dat. MFC podporuje data mimo pásmo. Pokročilí uživatelé, kteří pracují s třídou CAsyncSocket , můžou potřebovat používat kanál mimo pásmo, ale uživatelé třídy CSocket ho nebudou používat. Jednodušší způsob je vytvořit druhý soket pro předávání těchto dat. Další informace o odchozích datech najdete ve specifikaci Windows Sockets, která je k dispozici v sadě Windows SDK.
Pokud jste odvozeni z třídy CAsyncSocket
, musíte přepsat funkce oznámení pro tyto síťové události, které vás zajímají do vaší aplikace. Pokud odvozujete třídu z třídy CSocket
, je vaší volbou, zda chcete přepsat funkce oznámení, které vás zajímají. Můžete také použít CSocket
sám sebe, v takovém případě funkce oznámení ve výchozím nastavení dělat nic.
Tyto funkce jsou přepisovatelné funkce zpětného volání. CAsyncSocket
a CSocket
převést zprávy na oznámení, ale musíte implementovat, jak funkce oznámení reagují, pokud je chcete použít. Funkce oznámení se volají v okamžiku, kdy je soket upozorněn na událost, která vás zajímá, například přítomnost dat, která se mají číst.
MFC volá funkce oznámení, které umožňují přizpůsobit chování soketu v okamžiku, kdy je upozorněn. Můžete například volat Receive
z OnReceive
funkce oznámení, tj. při oznámení, že existují data ke čtení, zavoláte Receive
, abyste je přečetli. Tento přístup není nutný, ale jedná se o platný scénář. Jako alternativu můžete funkci oznámení použít ke sledování průběhu, tisku zpráv TRACE atd.
Tato oznámení můžete využít přepsáním funkcí oznámení v odvozené třídě soketu a poskytnutím implementace.
Během operace, jako je příjem nebo odesílání dat, CSocket
se objekt stane synchronním. Během synchronního stavu se všechna oznámení určená pro ostatní sokety zařadí do fronty, zatímco aktuální soket čeká na požadované oznámení. (Například během Receive
volání chce soket přečíst oznámení.) Jakmile soket dokončí synchronní operaci a stane se znovu asynchronním, můžou ostatní sokety začít přijímat oznámení ve frontě.
Poznámka
OnConnect
Funkce CSocket
oznámení se nikdy nevolá. U připojení zavoláte Connect
, který se vrátí po dokončení připojení (buď úspěšně, nebo omylem). Způsob zpracování oznámení o připojení je podrobnosti implementace MFC.
Podrobnosti o jednotlivých funkcích oznámení naleznete ve funkci pod třídou CAsyncSocket
v referenční dokumentaci MFC. Zdrojový kód a informace o ukázkách MFC naleznete v tématu Ukázky MFC.
Další informace naleznete v tématu: