Compartilhar via


CAsyncSocket::Send

Chamar essa função de membro para enviar dados em um soquete conectado.

virtual int Send(
   const void* lpBuf,
   int nBufLen,
   int nFlags = 0 
);

Parâmetros

  • lpBuf
    Um buffer que contém os dados a serem passados.

  • nBufLen
    O comprimento dos dados em lpBuf em bytes.

  • nFlags
    Especifica a maneira na qual o chamada é feita.A semântica de essa função é determinada pelas opções de soquete e pelo parâmetro de nFlags .O segundo é construído combinando alguns dos seguintes valores com o operador de OR C++:

    • MSG_DONTROUTE especifica que os dados não devem ser sujeitos a rotear.Um fornecedor de soquetes do windows pode escolher para ignorar este sinalizador.

    • Dados fora de banda de envio deMSG_OOBSOCK_STREAM (somente).

Valor de retorno

Se nenhum erro ocorre, Enviar retorna o número total de caracteres enviados.(Observe que isso pode ser menor que o número indicado por nBufLen.) Caso contrário, um valor de SOCKET_ERROR é retornado, e um código de erro específico pode ser recuperado chamando GetLastError.Os seguintes erros se aplicam a essa função de membro:

  • WSANOTINITIALISED A AfxSocketInit com êxito deve ocorrer antes de usar este API.

  • WSAENETDOWN a implementação da do windows detectou que o subsistema de rede falhou.

  • WSAEACCES o endereço aplicativo é um endereço de difusão, mas o sinalizador apropriado não foi definido.

  • A operação de soquetes do windows de bloqueio deWSAEINPROGRESS A está em andamento.

  • WSAEFAULT o argumento de lpBuf não é válido em uma parte do espaço de endereço do usuário.

  • WSAENETRESET a conexão deve ser redefinido como a implementação da do windows a soltou.

  • WSAENOBUFS os relatórios de implementação de soquetes do windows um deadlock de buffer.

  • WSAENOTCONN o soquete não está conectado.

  • WSAENOTSOCK o descritor não for um soquete.

  • WSAEOPNOTSUPP   MSG_OOB foi especificado, mas o soquete não é do tipo SOCK_STREAM.

  • WSAESHUTDOWN o soquete foi fechada; não é possível chamar Enviar em um soquete após ShutDown foi chamado com nHow definido como 1 ou 2.

  • WSAEWOULDBLOCK o soquete é marcado como nonblocking e a operação solicitada bloquearia.

  • WSAEMSGSIZE o soquete é do tipo SOCK_DGRAM, e a datagrama é maior do que o máximo suportado pela implementação da do windows.

  • WSAEINVAL o soquete não foi associado com Ligar.

  • WSAECONNABORTED o circuito virtual foi anuladas devido ao tempo limite ou outra falha.

  • WSAECONNRESET o circuito virtual foi redefinido pelo lado do servidor remoto.

Comentários

Enviar é usado para gravar dados de saída na conectados de fluxo ou de datagrama.Para os soquetes de datagrama, deve-se ter cuidado para não exceda o tamanho máximo de pacote de IP de sub-rede subjacentes, que é determinado pelo elemento de iMaxUdpDg na estrutura de WSADATA retornada por AfxSocketInit.Se os dados são muito longos passar atomic protocolo com o subjacente, o erro WSAEMSGSIZE é retornado por meio de GetLastError, e nenhum dado é passado.

Observe que para um soquete de datagrama a conclusão com êxito de Enviar não indica que os dados foram enviados com êxito.

Em objetos de CAsyncSocket de tipo SOCK_STREAM, o número de bytes escritos pode estar entre 1 e o comprimento aplicativo, dependendo da disponibilidade de buffer no local e em estrangeiros host.

Exemplo

Consulte o exemplo para CAsyncSocket::OnSend.

Requisitos

Cabeçalho: afxsock.h

Consulte também

Referência

Classe de CAsyncSocket

Gráfico de hierarquia

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo