Sdílet prostřednictvím


Rozhraní Windows Sockets: Třída CAsyncSocket pomocí

Tento článek vysvětluje způsob použití třídy CAsyncSocket.Uvědomte si, že tato třída zapouzdří rozhraní Windows Sockets API na velmi nízké úrovni.CAsyncSocketje určena pro programátory, kteří síťové komunikace podrobně znát, ale chcete pohodlí zpětná volání pro oznámení události sítě.Na základě tohoto předpokladu se tento článek obsahuje pouze základní instrukce.Pravděpodobně byste zvážit použití CAsyncSocket Pokud chcete Windows Sockets usnadnění obchodování s více síťovými protokoly v aplikaci MFC, ale nechcete ohleduplnost pružnost.Mohou cítit získat lepší efektivitu programátorů další komunikace přímo, než jste sami může pomocí obecnější alternativní model třídy CSocket.

CAsyncSocketje popsána v MFC odkaz.Visual C++ také poskytuje specifikace rozhraní Windows Sockets, umístěné v Windows SDK.Podrobnosti jsou ponechány na vás.Visual C++ neposkytuje ukázková aplikace pro CAsyncSocket.

Pokud nejsou vysoce profesionálem komunikace v síti a chcete jednoduché řešení, použijte třídu CSocket se CArchive objektu.Viz rozhraní Windows Sockets: pomocí soketů s archivy Další informace.

Tento článek se vztahuje na:

  • Vytvoření a použití CAsyncSocket objektu.

  • Vaše odpovědnost s CAsyncSocket.

Vytvoření a použití objektu CAsyncSocket

Použít CAsyncSocket

  1. Konstrukce CAsyncSocket objektu a objekt použít k vytvoření základní SOKETU zpracování.

    Následuje vytvoření soketu vzorek MFC dvoustupňový stavby.

    Příklad:

    CAsyncSocket sock;
    sock.Create( );    // Use the default parameters                    
    

    -nebo-

    CAsyncSocket* pSocket = new CAsyncSocket;
    int nPort = 27;
    pSocket->Create( nPort, SOCK_DGRAM );                    
    

    Vytvoří nad první konstruktor CAsyncSocket objektu v zásobníku.Vytvoří druhý konstruktor CAsyncSocket na haldy.První vytvořit nad volání používá k vytvoření soketu datového proudu výchozí parametry.Druhý vytvořit volání vytvoří zadaný port a adresu soketu.(Můžete použít buď vytvořit buď metodou konstrukce verze.)

    Parametry vytvořit jsou:

    • "port": krátké celé číslo.

      Server soketu musíte zadat port.Soket klienta je obvykle přijmout výchozí hodnotu pro tento parametr, který umožňuje vybrat port rozhraní Windows Sockets.

    • Typ soketu: SOCK_STREAM (výchozí) nebo SOCK_DGRAM.

    • Soket "adresa, například"ftp.microsoft.com"nebo"128.56.22.8".

      Toto je vaše adresa Internet Protocol (IP) v síti.Bude pravděpodobně vždy spoléhat na výchozí hodnotu tohoto parametru.

    Termíny "port" a "adresa soketu" jsou vysvětleny v rozhraní Windows Sockets: porty a adresy soketu.

  2. Soket klienta se připojit k serveru soketu objekt soketu pomocí CAsyncSocket::Connect.

    -nebo-

    Pokud server soketu, nastavit zahájit naslouchání soketu (s CAsyncSocket::Listen) pro pokusy o připojení z klienta.Při přijetí požadavku na připojení přijmout s CAsyncSocket::Accept.

    Po přijetí připojení můžete provádět úkoly, jako je ověření hesla.

    [!POZNÁMKA]

    Přijmout odkaz na novou, prázdnou trvá členské funkce CSocket jako svůj parametr objekt.Tento objekt je nutné vytvořit před volání přijmout.Pokud tento objekt soketu dostane mimo rozsah, ukončí připojení.Nevolejte vytvořit pro tento nový objekt soketu.Příklad naleznete v článku rozhraní Windows Sockets: posloupnost operací.

  3. Komunikace s jinými sockets provádět volání CAsyncSocket členské funkce objektu zapouzdření funkcí rozhraní API Windows Sockets.

    Viz specifikace rozhraní Windows Sockets a třída CAsyncSocket v MFC odkaz.

  4. Zničit CAsyncSocket objektu.

    Pokud jste vytvořili objekt soketu v zásobníku, je volána jeho destruktoru obsahující funkce dostane mimo rozsah.Pokud jste vytvořili objekt soketu na haldy, nové operátor, zodpovídáte za použití Odstranit operátor zničit objekt.

    Se objekt volání objektu Zavřít členské funkce před zničení objektu.

Příklad tohoto pořadí v kódu (skutečně pro CSocket objektu), viz rozhraní Windows Sockets: posloupnost operací.

Vaše odpovědnost s CAsyncSocket

Při vytváření objektu třídy CAsyncSocket, objekt zapouzdří Windows SOKETU zpracování a dodávky popisovače operací.Při použití CAsyncSocket, musí řešit všechny problémy, které pravděpodobně čelit, pokud přímo pomocí rozhraní API.Příklad:

  • "Blokování" scénáře.

  • Bajt pořadí rozdíly mezi odesílajícím a přijímajícím stroje.

  • Převod mezi Unicode a vícebajtové znakové sady (MBCS) řetězce.

Definice těchto termínů a další informace naleznete v tématu rozhraní Windows Sockets: blokování, rozhraní Windows Sockets: objednávání bajt, rozhraní Windows Sockets: převod řetězců.

Navzdory těmto problémům třídy CAsycnSocket může být správná volba pro vás Pokud aplikace vyžaduje flexibilitu a kontrolu můžete získat.Pokud není, zvažte použití třídy CSocket místo.CSocketmnoho podrobností, skryje: zprávy systému Windows ji čerpadla při blokování hovorů a poskytuje přístup k CArchive, který spravuje rozdíly pořadí bajtů a řetězec převod.

Více informací naleznete:

Viz také

Koncepty

Rozhraní Windows Sockets v MFC