Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Em aplicativos Winsock, um descritor de soquete não é um descritor de arquivo e deve ser usado com as funções Winsock.
No UNIX, um descritor de soquete é representado por um descritor de arquivo padrão. Como resultado, um descritor de soquete no UNIX pode ser passado para qualquer uma das funções de E/S de arquivo padrão (leitura e gravação, por exemplo).
Além disso, todos os identificadores no UNIX, incluindo identificadores de soquete, são inteiros pequenos e não negativos, e alguns aplicativos fazem suposições de que isso será verdadeiro.
Os identificadores do Windows Sockets não têm restrições, exceto que o valor INVALID_SOCKET não é um soquete válido. As alças de soquete podem ter qualquer valor no intervalo de 0 a INVALID_SOCKET–1.
Como o tipo SOCKET não está assinado, compilar o código-fonte existente de, por exemplo, um ambiente UNIX pode levar a avisos do compilador sobre incompatibilidades de tipo de dados assinados/não assinados.
Isso significa, por exemplo, que a verificação de erros quando o soquete e aceitar funções retornam não deve ser feita comparando o valor de retorno com –1 ou vendo se o valor é negativo (abordagens comuns e legais no UNIX). Em vez disso, um aplicativo deve usar a constante de manifesto INVALID_SOCKET conforme definido no Winsock2.h arquivo de cabeçalho. Por exemplo:
Estilo típico BSD UNIX
s = socket(...);
if (s == -1) /* or s < 0 */
{/*...*/}
Estilo preferido
s = socket(...);
if (s == INVALID_SOCKET)
{/*...*/}
Tópicos relacionados