Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Dopo che il switch di Windows Sockets riceve una chiamata WSPConnect avviata da un'applicazione, il switch confronta l'indirizzo di destinazione della richiesta di connessione con gli indirizzi nella tabella delle subnet IP utilizzate dai provider di servizi SAN. Se una di queste subnet include questo indirizzo di destinazione, lo switch chiama le funzioni WSPSocket e WSPBind del provider di servizi SAN corrispondente per la creazione e l'associazione di un socket, come descritto nella Creazione e associazione di socket SAN. Lo switch gestisce la richiesta di connessione dell'applicazione usando il socket SAN. Se l'indirizzo di destinazione della richiesta di connessione non si trova in una subnet SAN o se il provider di servizi SAN non riesce a creare e associare un socket, l'opzione usa il provider TCP/IP per stabilire la connessione.
La figura seguente mostra una panoramica del modo in cui il commutatore Windows Sockets richiede una connessione con un peer remoto. La sequenza e le sezioni che seguono descrivono la richiesta di connessione in modo più dettagliato.
Dopo aver creato e associato il socket SAN, l'interruttore esegue una richiesta di connessione, utilizzando il socket SAN nella modalità non bloccante, come descritto nella procedura seguente.
Per eseguire una richiesta di connessione
L'interruttore chiama la funzione WSPEventSelect del provider di servizi SAN . In questa chiamata, l'interruttore passa il codice FD_CONNECT e l'oggetto evento da associare a tale codice. La chiamata a WSPEventSelect richiede la notifica degli eventi di connessione e informa il provider di servizi SAN che qualsiasi chiamata successiva WSPConnect viene eseguita in modalità non bloccante.
Al termine della funzione WSPEventSelect, il commutatore chiama la funzione WSPConnect del provider di servizi SAN. In questa chiamata, l'interruttore passa l'indirizzo di destinazione nel formato di una delle famiglie di indirizzi WSK. Il driver proxy del provider di servizi SAN esegue il mapping dell'indirizzo di destinazione a un indirizzo nativo e tenta di stabilire la connessione.
Se il provider di servizi SAN funzione WSPConnect può completare o interrompere immediatamente l'operazione di connessione, restituisce il codice di esito positivo o negativo appropriato. Se la funzione WSPConnect del provider di servizi SAN non può completare immediatamente una richiesta di connessione, l'operazione di connessione del provider di servizi SAN procede in modo asincrono in un altro thread. La funzione di WSPConnect del provider di servizi SAN restituisce con l'errore WSAEWOULDBLOCK per indicare che il socket è contrassegnato come non bloccante e che l'operazione di connessione non può essere completata immediatamente.
Al termine dell'operazione di connessione, il provider di servizi SAN chiama la funzione SetEvent Win32 per segnalare l'oggetto evento registrato in precedenza nella chiamata WSPEventSelect.
Dopo che l'oggetto evento è stato segnalato, l'interruttore chiama la funzione WSPEnumNetworkEvents del provider di servizi SAN per ottenere il risultato dell'operazione di connessione.
Nota Dopo che lo switch stabilisce una connessione tramite un provider di servizi SAN, il switch non può più usare il provider TCP/IP per tale connessione. I provider di servizi SAN devono implementare completamente tutte le funzionalità necessarie per gestire una connessione stabilita.
Eliminazione del socket SAN
Se la funzione WSPConnect del provider di servizi SAN non riesce, il switch chiama la funzione WSPCloseSocket del provider di servizi SAN per distruggere il socket SAN. L'opzione chiama quindi la funzione del provider di servizi TCP/IP WSPConnect per inoltrare l'operazione di connessione al provider di servizi TCP/IP, a meno che il provider di servizi SAN non restituisca uno dei codici di errore seguenti come risultato dell'operazione di connessione:
WSAECONNRESET
Indica che nessuna applicazione è in ascolto sulla porta specificata nell'indirizzo di destinazione
WSAECONNREFUSED
Indica che l'applicazione remota ha rifiutato attivamente la richiesta di connessione
WSAEHOSTUNREACH
Indica che l'indirizzo di destinazione non esiste
Questi codici di errore precedenti garantiscono che anche un tentativo di stabilire la connessione tramite TCP/IP avrà esito negativo. Un provider di servizi SAN non deve restituire uno di questi codici di errore se non è in grado di garantire tale garanzia. Ad esempio, se un computer di destinazione che non supporta Windows Sockets Direct esiste nella rete SAN, ma può comunicare solo tramite NDIS, il provider di servizi SAN non può restituire WSAEHOSTUNREACH come risultato di una richiesta di connessione SAN non riuscita a questa destinazione perché una richiesta di connessione tramite il provider TCP/IP potrebbe avere esito positivo. In questo caso, il provider di servizi SAN deve restituire WSAETIMEDOUT.
Negoziazione di sessione
Dopo che l'interruttore stabilisce una connessione tramite un provider di servizi SAN, l'interruttore chiama la funzione di estensione WSPRegisterMemory del provider di servizi SAN per preregistrare la memoria per l'array buffer destinato a ricevere i messaggi in arrivo. L'interruttore chiama quindi la funzione WSPRecv del provider di servizi SAN per trasferire uno o più buffer per ricevere i dati dei messaggi in arrivo dal peer remoto. Il commutatore negozia quindi una sessione con il peer remoto scambiando una coppia di messaggi che contengono informazioni iniziali per il controllo del flusso. Dopo che il commutatore negozia una sessione, completa la chiamata WSPConnect avviata dall'applicazione. L'applicazione può quindi iniziare a inviare e ricevere dati sulla connessione. Per altre informazioni, vedere Accettazione di richieste di connessione.
Dopo aver stabilito una connessione tramite un socket SAN, lo switch non chiama la funzione del provider di servizi SAN WSPConnect. Il commutatore gestisce internamente le applicazioni che avviano una chiamata alla funzione WSPConnect del commutatore per effettuare un polling delle richieste di connessione.