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