Número máximo de sockets que pode utilizar uma aplicação

Traduções de Artigos Traduções de Artigos
Artigo: 111855 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

O número máximo de sockets suportados por um determinado fornecedor de sockets do Windows é específico de implementação. Uma aplicação deve fazer não suposições sobre a disponibilidade de um determinado número de sockets.

Mais Informação

Detalhes de implementação de sockets do Windows são descritos a estrutura de WSAData devolvido pelo WSAStartup() e definidas da seguinte forma:
struct WSAData {
     WORD          wVersion;
     WORD          wHighVersion;
     char           szDescription[WSADESCRIPTION_LEN+1];
     char          szSystemStatus[WSASYSSTATUS_LEN+1];
     unsigned short     iMaxSockets;
     unsigned short     iMaxUdpDg;
     char FAR *     lpVendorInfo
};
				
na devolução de WSAStart() no Windows NT
   iMaxSockets = 0x7fff (32767)
				
onde iMaxSockets é o número máximo de sockets potencialmente pode abrir um único processo. Uma implementação dos sockets do Windows pode fornecer um conjunto de sockets global para atribuição a qualquer processo ou pode atribuir recursos por processo sockets. O número pode reflectir a forma na qual a DLL de sockets do Windows ou o software de rede foi configurado. Este número também pode ser utilizado quando escrever uma aplicação como uma indicação de se a implementação de sockets do Windows pode ser utilizada pela aplicação.

Por exemplo, um servidor de X Windows pode verificar iMaxSockets quando é iniciado. Se o número de sockets é menor que 8, a aplicação apresenta uma mensagem de erro instruir o utilizador para reconfigurar o software de rede. (Esta é uma situação na qual o texto szSystemStatus pode ser utilizado.) Não é garantido que uma aplicação específica, na realidade, pode atribuir iMaxSockets sockets, porque poderão existir outras aplicações dos sockets do Windows em utilização.

No entanto, independentemente do número de sockets suportada por uma implementação específica é o problema do número máximo de sockets que uma aplicação, na realidade, pode utilizar.

O número máximo de sockets que pode utilizar uma aplicação de sockets do Windows é determinado durante a compilação pelo manifesto FD_SETSIZE constante. Para tal, do ficheiro Win32 SDK WINSOCK.H:
/*
 * Select uses arrays of SOCKETs. These macros manipulate such
 * arrays. FD_SETSIZE may be defined by the user before including
 * this file, but the default here should be >= 64.
 *
 * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
 * INCLUDED IN WINSOCK.H EXACTLY AS SHOWN HERE.
 */ 
#ifndef FD_SETSIZE
#define FD_SETSIZE      64
#endif /* FD_SETSIZE */ 
				
este valor é utilizado em construir as estruturas de fd_set utilizadas em select(). O valor predefinido de WINSOCK.H é 64. Se uma aplicação foi concebida para ser capaz de trabalhar com mais do que 64 sockets, defina FD_SETSIZE manifesto cada ficheiro de origem antes de a incluir WINSOCK.H. Uma forma de fazer isto serve para incluir a definição de opções de compilador makefile, tais como adicionar - DFD_SETSIZE = 128 como uma opção para a linha de comandos do compilador para Microsoft C.

NOTA: Definir FD_SETSIZE como um determinado valor não tem efeito no número de sockets fornecido por uma implementação dos sockets do Windows actual.

Propriedades

Artigo: 111855 - Última revisão: 1 de novembro de 2006 - Revisão: 3.1
A informação contida neste artigo aplica-se a:
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Workstation 3.1
Palavras-chave: 
kbmt kbnetwork KB111855 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 111855

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com