ioctlsocket
9/8/2008
Essa função controla o modo E/S de um Soquete.
Syntax
int ioctlsocket(
SOCKET s,
long cmd,
u_long FAR* argp
);
Parameters
- s
[no] Descritor identificando um Soquete.
- cmd
[no] Comando para executar em Soquete s.
- argp
[in, Out] Ponteiro para um parâmetro para cmd.
Return Value
Se não houver erro, essa função retornará zero. 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. |
WSAEINPROGRESS |
Um bloqueio é chamar sockets do Windows (Winsock) em andamento, ou o serviço provedor ainda é processamento um função callback. |
WSAENOTSOCK |
O descritor s não é um Soquete. |
WSAEFAULT |
O argp parâmetro não é um válido parte espaço de endereço o usuário. |
WSAEINVAL |
Um sem suporte ou inválido parâmetro. |
Remarks
Esta função pode ser usada em qualquer Soquete em qualquer estado. Ele é usado para definir ou recuperar parâmetros operacionais associado com o Soquete, independente do protocolo e subsistema de comunicações. O com suporte comandos para usar na cmd parâmetro e seu semântica é os seguintes.
FIONBIO
Usar FIONBIO com um diferente de zero argp parâmetro para habilitar o de não bloqueio modo do Soquete s. O argp parâmetro será zero se de não bloqueio é a ser desativado. O argp parâmetro aponta para uma sem assinatura valor longo. Quando um Soquete for criada, ela opera no bloqueio modo Por padrão (de não bloqueio modo está desativado). Isso é consistente com soquetes BSD.
O WSAEventSelect função define automaticamente uma Soquete para de não bloqueio modo. Se WSAEventSelect Foi emitido em um Soquete, em seguida, qualquer tentativa de usar ioctlsocket Para definir a Soquete voltar para bloqueio modo falhará com WSAEINVAL.
Para definir a Soquete voltar para bloqueio modo, um aplicativo deve primeiro desativar WSAEventSelect Por chamado WSAEventSelect Com o lNetworkEvents parâmetro igual a zero.
FIONREAD
Usar FIONREAD para determinar a quantidade de dados pendente no buffer de entrada de rede que podem ser ler do Soquete s. O argp parâmetro aponta para uma sem assinatura valor longo no qual ioctlsocket Armazena o resultado. Se s é fluxo-orientados (por exemplo, tipo SOCK_STREAM), FIONREAD retorna a quantidade de dados que podem ser ler em um único chamar para o Recv função; Isso não pode ser o mesmo que a quantidade total de dados enfileirado na Soquete. Se s é orientado a mensagem (por exemplo, tipo SOCK_DGRAM), FIONREAD retorna o tamanho do datagrama a primeira (mensagem) enfileirado na Soquete.
SIOCATMARK
Não é SIOCATMARK com suporte e retorna WSAEINVAL.
Compatibilidade
Isso ioctlsocket função executa somente um subconjunto de funções em um Soquete quando comparado para o IOCTL função encontrada no soquetes Berkeley. O ioctlsocket função não possui nenhum equivalente parâmetro de comando para o FIOASYNC do IOCTLe é SIOCATMARK de Soquete única - nível comando que é com suporte por ioctlsocket.
Observações para Bluetooth
O WSAIoctl e ioctlsocket controle funções o modo de um Soquete. WSAIoctl Requer 2.2 sockets do Windows (Winsock) e permite sobrepostas ou operação assíncrona. O ioctlsocket função pode ser usada com sockets do Windows (Winsock) 1.1 ou posterior. A seguinte lista mostra os códigos IOCTL Bluetooth-específicos que existem:
- SIO_RFCOMM_COMM_PARAMETERS define ou consultas atributos modem. As estruturas usadas e a semântica chamado é as mesmas como RFCOMM_COMM_PARAMETERS TDI_ACTION.
- SIO_RFCOMM_WAIT_MODEM_STATUS obtém de atual status do modem. A semântica é os mesmos RFCOMM_MODEM_STATUS TDI_ACTION.
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
getsockopt (Windows Sockets)
recv
setsockopt (Windows Sockets)
socket (Windows Sockets)
WSAEventSelect
WSAGetLastError
WSAIoctl
WSAStartup