Funzione di callback LPWSPLISTEN (ws2spi.h)
La funzione LPWSPListen stabilisce un socket da ascoltare per le connessioni in ingresso.
Sintassi
LPWSPLISTEN Lpwsplisten;
int Lpwsplisten(
[in] SOCKET s,
[in] int backlog,
[out] LPINT lpErrno
)
{...}
Parametri
[in] s
Descrittore che identifica un socket associato, non connesso.
[in] backlog
Lunghezza massima a cui può crescere la coda di connessioni in sospeso. Se questo valore è SOMAXCONN, il provider di servizi deve impostare il backlog su un valore massimo "ragionevole". Non è disponibile alcun provisioning standard per individuare il valore effettivo del backlog.
[out] lpErrno
Puntatore al codice di errore.
Valore restituito
Se non si verifica alcun errore, LPWSPListen restituisce zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e un codice di errore specifico è disponibile in lpErrno.
Codice di errore | Significato |
---|---|
Il sottosistema di rete non è riuscito. | |
L'indirizzo locale del socket è già in uso e il socket non è stato contrassegnato per consentire il riutilizzo degli indirizzi con SO_REUSEADDR. Questo errore si verifica in genere al momento di Bind, ma potrebbe essere ritardato fino a quando la funzione **bind** era in un indirizzo parzialmente jolly (che include ADDR_ANY) e se un indirizzo specifico deve essere eseguito il commit al momento di questa funzione. | |
La funzione viene richiamata quando un callback è in corso. | |
Il socket non è stato associato a LPWSPBind. | |
Socket già connesso. | |
Descrittori di socket esauriti. | |
Nessuno spazio di buffer disponibile. | |
Il descrittore non è un socket. | |
Il socket a cui si fa riferimento non è di un tipo che supporta l'operazione LPWSPListen . |
Commenti
Per accettare le connessioni, viene prima creato un socket con LPWSPSocket associato a un indirizzo locale con LPWSPBind, viene specificato un backlog per le connessioni in ingresso con LPWSPListen e quindi le connessioni vengono accettate con LPWSPAccept. LPWSPListen si applica solo ai socket orientati alla connessione,ad esempio SOCK_STREAM. Il socket s viene inserito in modalità passiva in cui le richieste di connessione in ingresso vengono riconosciute e accodate in attesa di accettazione dal client SPI di Windows Sockets.
Questa funzione viene in genere usata dai server che potrebbero avere più richieste di connessione alla volta: se una richiesta di connessione arriva con la coda completa, il client riceverà un errore con un'indicazione di WSAECONNREFUSED.
LPWSPListen deve continuare a funzionare razionalmente quando non sono disponibili descrittori. Deve accettare connessioni finché la coda non viene svuotata. Se i descrittori diventano disponibili, una chiamata successiva a LPWSPListen o LPWSPAccept riempie la coda al backlog corrente o più recente, se possibile e riprende l'ascolto per le connessioni in ingresso.
Un client SPI di Windows Sockets può chiamare LPWSPListen più volte nello stesso socket. Questo ha effetto dell'aggiornamento del backlog corrente per il socket di ascolto. Se sono presenti più connessioni in sospeso rispetto al nuovo valore del backlog , le connessioni in sospeso in eccesso verranno reimpostate e eliminate.
Il parametro backlog è limitato (in modo invisibile all'utente) a un valore ragionevole determinato dal provider di servizi. I valori illegali vengono sostituiti dal valore legale più vicino. Non è disponibile alcun provisioning standard per individuare il valore effettivo del backlog.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | ws2spi.h |