bind (Windows Sockets)

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função associa um local endereço com um Soquete.

Syntax

int bind(
  SOCKET s,
  const struct sockaddr FAR* name,
  int namelen
);

Parameters

  • s
    [no] Descritor identificando um desacoplado Soquete.
  • Nome
    [no] Endereço para atribuir para o Soquete a partir de sockaddr estrutura.
  • namelen
    [no] Comprimento do valor no parâmetro de nome.

Return Value

Se não houver erro, essa função retornará zero. Se um erro ocorrer, ele retorna SOCKET_ERROR, e um código de erro específicos podem ser recuperadas por chamado WSAGetLastError.

Remarks

Essa função é usada em um Soquete desconectado antes chamadas subseqüentes para o conectar (Soquetes do Windows) Ou escutar função. O BIND função é usada para BIND Connection-Oriented (transmitir) ou soquetes sem conexão (datagrama). Quando um Soquete é criado com uma chamar para o Soquete (Soquetes do Windows) função, ela existe em um espaço Nome (família de endereços), mas nenhum nome atribuiu a ele. Use o BIND função para estabelecer o local associação do Soquete por atribuição um local de nomes para um sem nome Soquete.

Um nome consiste de três partes ao usar o família de endereços Internet. A seguinte lista mostra as seguintes partes:

  • O família de endereços
  • Um endereço hospedar
  • Um número porta

Em sockets do Windows (Winsock) 2.2, THNome e parâmetro não é estritamente interpretado como um ponteiro para um sockaddr estrutura. É dessa maneira para compatibilidade Winsock 1.1 CAST. Provedores de serviço são livre para considerá-lo como um ponteiro para um bloco de memória de tamanho namelen. Os primeiros 2 bytes neste bloco (correspondente para o sa_family membro das sockaddr estrutura) deve conter o família de endereços que foi usado para criar a Soquete. Caso contrário, ocorrerá um erro WSAEFAULT.

Se um aplicativo não cuidado que local endereço for atribuído, especificar o manifesto constante valor ADDR_ANY para a sa_data membro das Nome parâmetro. Isso permite que o subjacente provedor serviço para usar qualquer apropriado endereço rede, simplificando potencialmente programação de aplicativos in the Presence of hosts com hospedagem múltipla (that is, hosts que têm um more than interface de rede e endereço).

Para TCP/IP, se a porta for especificada como 0, o provedor serviço atribui um exclusivo porta para o aplicativo com um valor entre 49152 e 65535. O aplicativo pode usar getsockname (Soquetes do Windows) Após chamado BIND Para saber o endereço e a porta que foi atribuída a ele. Se o endereço na Internet for igual a INADDR_ANY, getsockname não é necessariamente fornecer o endereço até o Soquete é conectado porque vários endereços podem ser válido se a hospedar for de hospedagem múltipla. Vinculando a um número específico porta diferente porta 0 não é recomendada para aplicativos cliente porque há um perigo de conflito com outro Soquete já usando esse número porta.

Anotações de Sockets IrDA

  • O SOCKADDR_IRDAestrutura é usada na addr parâmetro.
  • Não há nenhum equivalente endereço curinga para INADDR_ANY.
  • O arquivo cabeçalho Af_irda.h deve ser explicitamente incluído.
  • Os nomes locais não são expostos no IrDA. Soquetes cliente IrDA, portanto, devem nunca chamar o BIND função antes de conectar (Soquetes do Windows) função. Se o Soquete IrDA foi anteriormente ligado a um uso nome serviço BIND, o conectar função falhará com SOCKET_ERROR.

Para obter mais inforamtion sobre suporte IrDA no Windows Embedded CE, consulte Comunicação via infravermelho.

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

Foi feita uma tentativa de acesso a um soquete de uma maneira que é proibida pelas permissões de acesso. Um exemplo está usando um transmitir endereço para SendTo Sem transmitir permissão que está sendo definida usando setsockopt (Soquetes do Windows).

WSAEADDRINUSE

Um processo na máquina já está ligado para totalmente qualificado o mesmo endereço e a Soquete foi não marcado para Permitir reutilização endereço com SO_REUSEADDR. De exemplo, o endereço IP e porta são ligado em maiúsculas e minúsculas de af_inet. (Consulte a opção Soquete SO_REUSEADDR em setsockopt (Soquetes do Windows).)

WSAEADDRNOTAVAIL

O endereço especificado não é um válido endereço para esta máquina.

WSAEFAULT

O Nome Ou namelen parâmetro não é um válido parte espaço de endereço de usuário, o namelen parâmetro é muito pequeno, o Nome parâmetro contém um formato endereço incorreto para o associado família de endereços ou dois primeiros bytes do bloco de memória especificado pelo nome não correspondem a família de endereços associado com o descritor Soquete s.

WSAEINPROGRESS

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

WSAEINVAL

O Soquete já está ligado a um endereço.

WSAENOBUFS

Não há buffers disponível; Número excessivo de conexões.

WSAENOTSOCK

O descritor não é um Soquete.

Anotações de Sockets Bluetooth

  • O arquivo cabeçalho ws2bth.h deve ser explicitamente incluído.
  • Se a porta for definida para 0, o identificador canalizar servidor será automaticamente alocados. Uso getsockname (Soquetes do Windows) Para recuperá-lo.
  • O BIND função não registrar serviço no banco de dados de SDP. O programação de aplicativos é responsável por fazer isso.

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

connect (Windows Sockets)
getsockname (Windows Sockets)
listen
setsockopt (Windows Sockets)
sockaddr
socket (Windows Sockets)
WSAGetLastError
WSAStartup