sendto

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função envia dados para um destino específico.

Syntax

int sendto(
  SOCKET s,
  const char FAR* buf, 
  int len,
  int flags,
  const struct sockaddr FAR* to,
  int tolen
);

Parameters

  • s
    [no] Descritor identificando um Soquete possivelmente conectado.
  • buf
    [no] Buffer contendo os dados para serem transmitidos.
  • Len
    [no] Comprimento dos dados na buf parâmetro.
  • Sinalizadores
    [no] Indicador especificando a maneira na qual o chamar é feita.
  • Para
    [no] Ponteiro opcional para o endereço de Soquete de destino.
  • tolen
    [no] Tamanho do endereço na Para parâmetro.

Return Value

Se não houver erro, essa função retorna o número total de bytes enviados, que pode ser Less than o número indicado pelo Len. Se um erro ocorrer, será retornado um valor de SOCKET_ERROR, e um código de erro específicos podem ser recuperadas por chamado WSAGetLastError.

A seguinte tabela mostra uma lista dos códigos de erro possível.

Código de erro Descrição

WSANOTINITIALISED

Um bem-sucedido WSAStartup chamar deve ocorrer antes de usar essa função.

WSAENETDOWN

Falha no subsistema da rede.

WSAEACCES

O endereço solicitado é um transmitir endereço, mas o apropriado sinalizador não foi definido. Chamar setsockopt (Soquetes do Windows) Com o SO_BROADCAST parâmetro para permitir o uso da transmitir endereço.

WSAEINVAL

Um sinalizador desconhecido foi especificado, ou MSG_OOB foi especificado para um Soquete com SO_OOBINLINE habilitado.

WSAEINTR

O Soquete foi fechada.

WSAEINPROGRESS

Um bloqueio é chamar sockets do Windows (Winsock) em andamento, ou o serviço provedor ainda é processamento um função callback.

WSAEFAULT

O buf Ou Para parâmetro não for parte de espaço de endereço de usuário, ou a tolen parâmetro é muito pequeno.

WSAENETRESET

A conexão foi interrompida porque a atividade de manutenção de funcionamento detectou uma falha enquanto a operação estava em andamento.

WSAENOBUFS

Nenhuma espaço do buffer está disponível.

WSAENOTCONN

O Soquete não está conectados (orientado à conexão soquetes somente).

WSAENOTSOCK

O descritor não é um Soquete.

WSAEOPNOTSUPP

MSG_OOB foi especificado, mas o Soquete não é estilo transmitir such as tipo SOCK_STREAM, out of banda (OOB) dados Não Não com suporte no domínio a comunicação associado com este Soquete, ou o Soquete é unidirecional e oferece suporte a receber somente operações.

WSAESHUTDOWN

O Soquete foi desligado. Não é possível chamar SendTo Em um Soquete depois desligamento Tem sido chamado com Como Definido como SD_SEND ou SD_BOTH.

WSAEWOULDBLOCK

O Soquete é marcado como de não bloqueio e a operação solicitada seria bloco.

WSAEMSGSIZE

O Soquete é orientado a mensagem e a mensagem é maior do que o máximo com suporte pela subjacente transporte.

WSAEHOSTUNREACH

O host remoto não pode ser alcançado por meio deste host no momento.

WSAECONNABORTED

O circuito virtual foi finalizado devido a um tempo limite ou outra falha. O aplicativo deve fechar o Soquete porque ele não é utilizável.

WSAECONNRESET

O circuito virtual foi redefinir pelo remoto lado executar fechar um disco rígido ou abortive. Para UDP soquetes, o remoto hospedar conseguiu entregar uma datagrama UDP anteriormente enviados e respondeu com um "da Porta Inacessível" Pacote ICMP. O aplicativo deve fechar o Soquete porque ele não é utilizável.

WSAEADDRNOTAVAIL

O remoto endereço não é um válido endereço, de exemplo, ADDR_ANY.

WSAEAFNOSUPPORT

Endereços de família especificado não podem ser usados com este Soquete.

WSAEDESTADDRREQ

Um endereço destino é exigido.

WSAENETUNREACH

A rede não pode ser alcançada através deste host neste momento.

WSAETIMEDOUT

A conexão foi descartada because of falha uma rede ou porque o sistema na outra extremidade entrou pressionada sem aviso.

Remarks

Essa função é usada para gravar de saída dados em um Soquete. Para soquetes orientado a mensagem, deve ter cuidado para não exceder o tamanho máximo de pacote do subjacente sub-redes, que podem ser obtidos usando getsockopt (Soquetes do Windows) Para recuperar o valor da opção Soquete SO_MAX_MSG_SIZE. Se a dados é muito longo para transmitir atomicamente através de subjacente protocolo, o erro é retornado WSAEMSGSIZE e não dados é transmitida.

O Para parâmetro pode ser qualquer válido endereço no família de endereços do o Soquete, incluindo um transmitir ou qualquer endereço de multicast. Para enviar para transmitir um endereço, um aplicativo deve ter usado setsockopt (Soquetes do Windows) Com SO_BROADCAST habilitado. Caso contrário, SendTo falhará com o código de erro WSAEACCES. Para TCP/IP, um aplicativo pode enviar para qualquer endereço de multicast.

Se o Soquete é desacoplado, os valores são atribuídos para o local exclusivo associação, o sistema e o Soquete, em seguida, está marcada como ligado. Um aplicativo pode usar getsockname (Soquetes do Windows) Para determinar o local Nome Soquete neste maiúsculas e minúsculas.

O bem-sucedido conclusão de uma SendTo chamar não indica que os dados foi entregue com êxito.

O SendTo função é geralmente usado em um sem conexão Soquete para enviar uma datagrama para uma Soquete ponto específico identificado pelo Para parâmetro. Mesmo se o sem conexão Soquete tenha sido previamente conectado a um endereço específico, o Para parâmetro substitui o endereço de destino para esse datagrama específico somente. Em um Soquete Connection-Oriented, o Para e tolen Os parâmetros são ignorados, tornando SendTo equivalente a Enviar.

Para os soquetes Using IP (Version 4)

Para enviar um transmitir (em um SOCK_DGRAM somente), o endereço na Para parâmetro deve ser construído usando o endereço IP INADDR_BROADCAST (definido em Winsock2.h), especial together with número de porta pretendido. É geralmente para transmitir um datagrama para exceder o tamanho no qual a fragmentação pode ocorrer, que significa que a parte de dados da datagrama (excluindo cabeçalhos) não deve exceder 512 bytes.

Se nenhuma espaço do buffer está disponível no sistema de transporte para armazenar os dados para serem transmitidos, SendTo Será bloco, a menos que a Soquete foi colocado em um de não bloqueio modo. Em de não bloqueio, fluxo-orientados soquetes, o número de bytes gravados podem estar entre 1 e o comprimento solicitado, depending on disponibilidade reserva em sistemas tanto o cliente e servidor. O Selecione Ou WSAEventSelect função pode ser usada para determinar quando ele é possível enviar mais dados.

Chamando SendTo Com um Len De zero é permissível e irá retornar zero como um válido valor. Para soquetes orientado a mensagem, uma datagrama transporte Zero-Length é enviada.

O Sinalizadores parâmetro pode ser usado para influenciam o comportamento da chamada de função além de opções especificadas para o associado Soquete. A semântica desta função é determinada pelas opções de Soquete e o Sinalizadores parâmetro. A seguinte tabela mostra o valor que é usada com o operador bit a bit OR para construção o parâmetro sinalizadores.

Valor Descrição

MSG_DONTROUTE

Especifica que os dados não devem ser assunto para roteamento. Um provedor serviço Soquetes do Windows pode escolher para ignorar este sinalizador.

Requirements

Header winsock2.h
Library Ws2.lib
Windows Embedded CE Windows CE 1.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

getsockname (Windows Sockets)
getsockopt (Windows Sockets)
recv
recvfrom
select
send
setsockopt (Windows Sockets)
shutdown
socket (Windows Sockets)
WSAEventSelect
WSAGetLastError
WSAStartup