Partilhar via


Windows Sockets: Usando a classe CAsyncSocket

Este artigo explica como usar a classe CAsyncSocket.Esteja ciente de que essa classe encapsula a API do Sockets do Windows em um nível muito baixo.CAsyncSocket é para uso por programadores que sabe comunicações de rede detalhadamente, mas deseja a conveniência de retornos de chamada de notificação de eventos de rede. Com base nessa pressuposição, este artigo fornece apenas a instrução básica.Você provavelmente deve considerar o uso de CAsyncSocket Se você desejar facilidade do Windows Sockets de lidar com vários protocolos de rede em um aplicativo MFC mas não deseja sacrifiquem a flexibilidade. Você também pode se sentir que você pode obter melhor eficiência por programação as comunicações mais diretamente a você mesmo que você poderia usando o modelo alternativo mais geral de classe CSocket.

CAsyncSocket está documentada a Referência da MFC.O Visual C++ também fornece a especificação de Windows Sockets, localizada no Windows SDK. Os detalhes são deixados para você.O Visual C++ não fornece um exemplo de aplicativo CAsyncSocket.

Se você não é altamente conhecimentos sobre comunicações de rede e quer uma solução simples, use a classe CSocket with a CArchive objeto. See Windows Sockets: Usando soquetes com arquivos para obter mais informações.

Este artigo aborda:

  • Criar e usar um CAsyncSocket objeto.

  • Suas responsabilidades com CAsyncSocket.

Criando e usando um objeto CAsyncSocket

Para usar CAsyncSocket

  1. Construir um CAsyncSocket objeto e use o objeto para criar a base SOQUETE alça.

    A criação de um soquete segue o padrão MFC de construção de dois estágios.

    Por exemplo:

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

    - ou -

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

    O primeiro construtor acima cria um CAsyncSocket objeto na pilha. O segundo construtor cria um CAsyncSocket na pilha. O primeiro Criar telefonar acima usa os parâmetros padrão para criar um soquete de fluxo.O segundo Criar telefonar cria um soquete de datagrama com uma porta especificada e um endereço.(Você pode usar qualquer um dos Criarversão com qualquer um dos métodos de construção.)

    Os parâmetros de Criar are:

    • Uma "porta": um inteiro curto.

      Para um soquete de servidor, você deve especificar uma porta.Para um soquete de cliente, normalmente você aceitar o valor padrão para esse parâmetro, que permite que o Windows Sockets selecionar uma porta.

    • Um tipo de soquete: SOCK_STREAM (o padrão) ou SOCK_DGRAM.

    • "Endereço" sistema autônomo "ftp.microsoft.com" ou "128.56.22.8" soquete.

      Isso é o seu endereço IP (Internet protocolo IP IP) na rede.Você provavelmente sempre depende o valor padrão para esse parâmetro.

    Os termos "porta" e "endereço de soquete" são explicadas naWindows Sockets: Portas e endereços de soquete.

  2. Se o soquete é um cliente, conectar o objeto de soquete para um servidor de soquete, usando CAsyncSocket::Connect.

    - ou -

    Se um servidor, o soquete conjunto o soquete para começar a escutar (com CAsyncSocket::Listen) para tentativas de conectar de um cliente.Ao receber uma solicitação de conexão, aceitá-lo com CAsyncSocket::Accept.

    Após aceitar uma conexão, você pode executar tarefas sistema autônomo a validação de senhas.

    Observação:

    O Aceitar função de membro leva uma referência a um novo e vazio CSocket objeto sistema autônomo parâmetro. Você deve construir esse objeto antes de você telefonar Aceitar.Se este objeto de soquete sai do escopo, a conexão será fechada.Não chame Criar para esse novo objeto de soquete.Para obter um exemplo, consulte o artigo Windows Sockets: sequência de operações.

  3. Realize a comunicação com outros soquetes chamando o CAsyncSocket funções de membro do objeto que englobam as funções de API do Windows Sockets.

    Consulte o Windows Sockets especificação e classe CAsyncSocket in the Referência da MFC.

  4. Destruir o CAsyncSocket objeto.

    Se você criou o objeto de soquete na pilha, o destruidor é chamado quando a função contendo sai do escopo.Se você criou o objeto de soquete no heap, usando o novo operador, você é responsável por usar o Excluir operador para destruir o objeto.

    O destruidor chama Fecharfunção de membro antes destruir o objeto.

Para obter um exemplo dessa sequência no código (na verdade, por um CSocket objeto), consulte Windows Sockets: sequência de operações.

Suas responsabilidades com CAsyncSocket

Quando você cria um objeto de classe CAsyncSocket, o objeto encapsula um Windows SOQUETE manipular e fornece operações sobre a alça.Quando você usa CAsyncSocket, você precisa lidar com todos os problemas que podem enfrentar se usando a API diretamente. Por exemplo:

  • Cenários de "Bloqueio".

  • Byte de ordem as diferenças entre o envio e recebimento de máquinas.

  • Convertendo entre Unicode e caractere multibyte Defina seqüências de caractere (MBCS).

Para obter as definições desses termos e informações adicionais, consulte Windows Sockets: Bloqueio deWindows Sockets: byte pedidosWindows Sockets: Convertendo strings.

Apesar desses problemas, de classe CAsycnSocket pode ser a escolha certa para você se seu aplicativo requer a flexibilidade e controle, que você pode obter.Caso contrário, você deve considerar o uso da classe CSocket em vez disso. CSocket oculta muitos detalhes de você: Ele bombeia mensagens do Windows durante o bloqueio de chamadas e oferece que acesso a CArchive, que gerencia as diferenças de ordem de byte e conversão de seqüência de caracteres para você.

Para obter mais informações, consulte:

Consulte também

Conceitos

Windows Sockets no MFC