Lauschen auf Verbindungen in einem SAN
Die folgende Abbildung zeigt eine Übersicht darüber, wie der Windows Sockets-Switch einen SAN-Socket zur Bestätigung und Warteschlange festlegt, d. h. auf eingehende Verbindungsanforderungen von einem Remotepeer lauschen. In den folgenden Themen wird der Überwachungsprozess ausführlicher beschrieben.
Wenn der Windows Sockets-Switch einen WSPListen-Aufruf empfängt, der von einer Anwendung initiiert wurde, ruft der Switch immer zuerst die WSPListen-Funktion des TCP/IP-Anbieters auf, um den Socket des TCP/IP-Anbieters so festzulegen, dass eingehende Verbindungsanforderungen bestätigt und in die Warteschlange gestellt werden. Wenn der Socket der Anwendung an die IP-Adresse einer SAN-Netzwerkkarte oder an die Ip-Adresse des Feldhalters gebunden ist, verwendet der Switch auch den entsprechenden SAN-Dienstanbieter, um einen zusätzlichen Socket zu erstellen und zu binden. Weitere Informationen finden Sie unter Erstellen und Binden von SAN-Sockets.
Lauschen auf eingehende Verbindungsanforderungen
Nachdem ein SAN-Dienstanbieter aufgefordert wurde, den SAN-Socket zu erstellen und zu binden, ruft der Switch die WSPListen-Funktion des SAN-Dienstanbieters auf, damit der SAN-Socket auf eingehende Verbindungen lauscht und einen Grenzwert für die Anzahl der eingehenden Verbindungsanforderungen angibt, die der SAN-Dienstanbieter in die Warteschlange stellen kann.
Einrichten, um eingehende Verbindungen zu akzeptieren
Der Schalter akzeptiert eingehende Verbindungen nur im Nichtblockierungsmodus. Der Switch ruft die WSPEventSelect-Funktion des SAN-Dienstanbieters auf, um einen Socket in den Nichtblockierungsmodus zu versetzen und eine Benachrichtigung über eingehende Verbindungsereignisse anzufordern. In diesem Aufruf übergibt der Switch den FD_ACCEPT Code und das Ereignisobjekt, das diesem Code zugeordnet werden soll. Nachdem der SAN-Dienstanbieter eine Verbindungsanforderung für seinen Socket empfängt, der zuvor für die Überwachung eingerichtet wurde, ruft der SAN-Dienstanbieter die Win32 SetEvent-Funktion auf, um das zugeordnete Ereignisobjekt zu signalisieren. Der Switch lauscht auf eingehende Verbindungsereignisse in einem dedizierten Thread und akzeptiert oder lehnt die Verbindung ab, nachdem das Ereignisobjekt signalisiert wurde. Weitere Informationen finden Sie unter Akzeptieren von Verbindungsanforderungen.
Anzeigen der Ablehnung einer Verbindungsanforderung an einen Remotepeer
Wenn eine Verbindungsanforderung eingeht und der Backlog der Verbindungsanforderungen des SAN-Dienstanbieters voll ist, sollte der SAN-Dienstanbieter dem Remotepeer sofort mitteilen, dass er die Verbindungsanforderung ablehnt. In diesem Fall signalisiert der SAN-Dienstanbieter dem Ereignisobjekt nicht, um den Switch zu informieren, die Verbindungsanforderung anzunehmen oder abzulehnen. Der SAN-Dienstanbieter auf dem Remotepeer muss dann seinen Verbindungsvorgang, der von einem WSPConnect-Aufruf mit dem WSAECONNREFUSED-Fehlercode initiiert wurde, fehlschlagen.