Socketattributflags und-Modi
Es gibt mehrere socketattribute, die über den Flags -Parameter in wspsocketangegeben werden können. Das überlappende Flag für das WSA- _ Flag _ gibt an, dass ein Socket für überlappende e/a-Vorgänge verwendet wird. Die Unterstützung dieses Attributs ist für alle Dienstanbieter obligatorisch. Weitere Informationen finden Sie unter überlappende e / a. Beachten Sie, dass das Erstellen eines Sockets mit dem überlappenden Attribut keine Auswirkung darauf hat, ob sich ein Socket derzeit im blockierenden oder nicht blockierenden Modus befindet. Sockets, die mit dem überlappenden Attribut erstellt wurden, können verwendet werden, um überlappende e/a auszuführen, und dadurch wird der Blockierungs Modus eines Sockets nicht geändert. Da überlappende e/a-Vorgänge nicht blockiert werden, ist der Blockierungs Modus eines Sockets für diese Vorgänge irrelevant.
Beim Erstellen von Sockets, die für Multipoint-und/oder Multicast Vorgänge verwendet werden sollen, werden vier zusätzliche Attributflags verwendet, und die Unterstützung für diese Attribute ist optional. Anbieter, die Multipoint-Attribute unterstützen, geben dies über das _ Multipoint-Bit XP1 Suppport _ in den jeweiligen wsaprotocol- _ Informations Strukturen an. Die Definition und Verwendung der einzelnen Flags finden Sie unter wspsocket und Protokoll unabhängige Multicast-und Multipoint-APIs in der API . Nur Sockets, die mit Multipoint-bezogenen Attributen erstellt werden, können in der wspjoinleaf -Funktion zum Erstellen von Multipoint-Sitzungen verwendet werden.
Ein Socket befindet sich jederzeit in einem von zwei Modi: Blockierung und nicht Blockierung. Sockets werden standardmäßig im blockierenden Modus erstellt und können in den nicht blockierenden Modus geändert werden, indem wspasyncselect, wspeventselectoder wspioctlaufgerufen wird. Ein Socket kann mithilfe von wspioctl wieder in den Blockierungs Modus gewechselt werden, wenn " wspasyncselect " oder " wspeventselect " nicht aktiv ist. Der Modus für einen Socket wirkt sich nur auf die Funktionen aus, die blockiert werden können, und wirkt sich nicht auf überlappende e/a-Vorgänge aus. Weitere Informationen finden Sie unter Blockieren von Vorgängen .