Partilhar via


CAsyncSocket::SendTo

Chame essa função de membro para enviar dados para um destino específico.

int SendTo(
   const void* lpBuf,
   int nBufLen,
   UINT nHostPort,
   LPCTSTR lpszHostAddress = NULL,
   int nFlags = 0 
);
int SendTo(
   const void* lpBuf,
   int nBufLen,
   const SOCKADDR* lpSockAddr,
   int nSockAddrLen,
   int nFlags = 0 
);

Parâmetros

  • lpBuf
    Um buffer que contém os dados sejam transmitidos.

  • nBufLen
    O comprimento dos dados em lpBuf em bytes.

  • nHostPort
    A porta que identifica o aplicativo de soquete.

  • lpszHostAddress
    O endereço de rede do soquete para o qual este objeto está conectado: um nome de computador, sistema autônomo "ftp.microsoft.com" ou um número pontilhado, sistema autônomo "128.56.22.8".

  • nFlags
    Especifica a maneira na qual a telefonar é feita.A semântica dessa função é determinada pelas opções de soquete e o nFlags parâmetro. A segunda é construída pela combinação de qualquer um dos seguintes valores com o C++ OR operador:

    • MSG_DONTROUTE   Especifica que os dados não devem ser sujeita a roteamento.Um fornecedor de Windows Sockets pode optar por ignorar este sinalizar.

    • MSG_OOB   Enviar dados fora de banda (SOCK_STREAM only).

  • lpSockAddr
    Um ponteiro para um SOCKADDR estrutura que contém o endereço de soquete de destino.

  • nSockAddrLen
    O tamanho de endereço em lpSockAddr em bytes.

Valor de retorno

Se não houver erro, SendTo Retorna o número total de caracteres enviados. (Observe que isso pode ser menor do 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   Um bem-sucedida AfxSocketInit deve ocorrer antes de usar essa API.

  • WSAENETDOWN   A implementação do Windows Sockets detectou que o subsistema de rede falhou.

  • WSAEACCES   O endereço solicitado é um endereço de difundido, mas o sinalizar apropriado não era conjunto.

  • WSAEINPROGRESS   Uma operação de bloqueio de Windows Sockets está em andamento.

  • WSAEFAULT   The lpBuf ou lpSockAddr parâmetros não fazem parte do espaço de endereçamento do usuário, ou o lpSockAddr argumento é muito pequeno (menor que o dimensionar de um SOCKADDR estrutura).

  • WSAEINVAL   O nome do host é inválido.

  • WSAENET reiniciar   A conexão deve ser reiniciar porque a implementação do Windows Sockets soltou.

  • WSAENOBUFS   A implementação do Windows Sockets relata um deadlock de buffer.

  • WSAENOTCONN   O soquete não está conectado (SOCK_STREAM only).

  • WSAENOTSOCK   O descritor não é um soquete.

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

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

  • WSAEWOULDBLOCK   O soquete está marcado sistema autônomo não bloqueadas e bloquearia a operação solicitada.

  • WSAEMSGSIZE   O soquete é do tipo SOCK_DGRAM e o datagrama é maior do que o máximo suportado pela implementação do Windows Sockets.

  • WSAECONNABORTED   O circuito virtual foi anulado devido ao tempo limite ou Outros falha.

  • WSAECONNRESET   O circuito virtual foi redefinido pelo lado remoto.

  • WSAEADDRNOTAVAIL   O endereço especificado não está disponível na computador local.

  • WSAEAFNOSUPPORT   Endereços na família especificado não podem ser usados com esse soquete.

  • WSAEDESTADDRREQ   É necessário um endereço de destino.

  • WSAENETUNREACH   A rede não pode ser acessada a partir deste host neste momento.

Comentários

SendTo é usado nos soquetes datagrama ou fluxo e é usada para gravar dados de saída em um soquete. Para soquetes do datagrama, é preciso ter cuidado para não exceder o IP dimensionar máximo do pacote de sub-redes subjacentes, que é fornecido pelo iMaxUdpDg elemento o WSADATA estrutura preenchido por AfxSocketInit.Se os dados forem muito extensas atomicamente passar pelo protocolo subjacente, o erro WSAEMSGSIZE são retornados, e nenhum dado é transmitido.

Observe que a conclusão bem-sucedida de um SendTo não indica que os dados foi entregue com êxito.

SendTo só é usado em um SOCK_DGRAM soquete para enviar um datagrama para um soquete específico identificado pelo lpSockAddr parâmetro.

Para enviar uma difundido (em um SOCK_DGRAM somente), o endereço no lpSockAddr parâmetro deve ser construído usando o endereço IP especial INADDR_BROADCAST (definido no arquivo de cabeçalho do Windows Sockets WINSOCK.H) em conjunto com o número da porta pretendido.Ou então, se o lpszHostAddress o parâmetro é NULO, o soquete é configurado para transmissão.É geralmente para um datagrama de difundido exceder o dimensionar em que pode ocorrer fragmentação, que implica a parte de dados do datagrama (exceto cabeçalhos) não deve exceder 512 bytes.

Para lidar com endereços IPv6, use CAsyncSocket::SendToEx.

Requisitos

Cabeçalho: afxsock.h

Consulte também

Referência

Classe CAsyncSocket

Gráfico de hierarquia

CAsyncSocket::criar

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::enviar

Outros recursos

CAsyncSocket membros