LPWSPBIND-Rückruffunktion (ws2spi.h)
Die LPWSPBind-Funktion ordnet einem Socket eine lokale Adresse (d. h. name) zu.
Syntax
LPWSPBIND Lpwspbind;
int Lpwspbind(
[in] SOCKET s,
[in] const sockaddr *name,
[in] int namelen,
[out] LPINT lpErrno
)
{...}
Parameter
[in] s
Ein Deskriptor, der einen ungebundenen Socket identifiziert.
[in] name
Die Adresse, die dem Socket in Form einer sockaddr-Struktur zugewiesen werden soll.
Mit Ausnahme des sa_family-Members werden sockaddr-Inhalte in der Netzwerkbytereihenfolge ausgedrückt. In Windows Sockets 2 wird der name-Parameter nicht streng als Zeiger auf eine sockaddr-Struktur interpretiert. Es wird für winsock-Kompatibilität auf diese Weise umgewandelt. Die tatsächliche Struktur wird im Kontext verschiedener Adressfamilien unterschiedlich interpretiert. Die einzige Anforderung besteht darin, dass der erste u_short die Adressfamilie und die Gesamtgröße des Speicherpuffers in Bytes namelen ist.
[in] namelen
Die Länge der Struktur in Bytes, auf die der name-Parameter verweist.
[out] lpErrno
Ein Zeiger auf den Fehlercode.
Rückgabewert
Wenn kein Fehler auftritt, gibt LPWSPBind null zurück. Andernfalls wird SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode ist in lpErrno verfügbar.
Fehlercode | Bedeutung |
---|---|
Fehler beim Netzwerksubsystem. | |
Einige Prozesse auf dem lokalen Computer wurden bereits an dieselbe vollqualifizierte Adresse gebunden (z. B. IP-Adresse und Port im **AF_INET**-Fall), und der Socket wurde nicht markiert, um die Adresswiederverwendung mit SO_REUSEADDR zu ermöglichen. (Siehe SO_REUSEADDR Socketoption unter LPWSPSetSockOpt.) | |
Die angegebene Adresse ist keine gültige Adresse für diesen Computer. | |
Der Name oder der Namelen-Parameter ist kein gültiger Teil des Benutzeradressraums, der namelen-Parameter ist zu klein, der name-Parameter enthält ein falsches Adressformat für die zugeordnete Adressfamilie, oder die ersten beiden Bytes des durch den Namen angegebenen Speicherblocks stimmen nicht mit der Adressfamilie überein, die dem Socketdeskriptor s zugeordnet ist. | |
Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird. | |
Der Socket ist bereits an eine Adresse gebunden. | |
Es sind nicht genügend Puffer verfügbar, es gibt zu viele Verbindungen. | |
Der Deskriptor ist kein Socket. |
Hinweise
Die LPWSPBind-Funktion wird vor nachfolgenden Aufrufen der Funktionen LPWSPConnect oder LPWSPListen auf einem nicht verbundenen verbindungslosen oder verbindungsorientierten Socket verwendet. Wenn ein Socket mit LPWSPSocket erstellt wird, ist er in einem Namespace (Adressfamilie) vorhanden, hat jedoch keinen Namen oder eine zugewiesene lokale Adresse. Die LPWSPBind-Funktion richtet die lokale Zuordnung des Sockets durch Zuweisen eines lokalen Namens zu einem unbenannten Socket ein.
Beispielsweise besteht in der Internetadressfamilie ein Name aus drei Teilen: der Adressfamilie, einer Hostadresse und einer Portnummer, die den Winsock SPI-Client identifiziert. In Windows Sockets 2 wird der name-Parameter nicht streng als Zeiger auf eine sockaddr-Struktur interpretiert. Dienstanbieter können dies als Zeiger auf einen Speicherblock der Größe namelen betrachten. Die ersten beiden Bytes in diesem Block (entsprechend sa_family in der sockaddr-Deklaration ) müssen die Adressfamilie enthalten, die zum Erstellen des Sockets verwendet wurde. Andernfalls wird der Fehler WSAEFAULT angezeigt.
Wenn ein SPI-Client von Windows Sockets 2 nicht darauf ankommt, welche lokale Adresse ihm zugewiesen ist, wird der manifestkonstante Wert ADDR_ANY für den sa_data Member des namensparameters angegeben. Dadurch wird der Dienstanbieter angewiesen, jede geeignete Netzwerkadresse zu verwenden. Wenn der Port für TCP/IP als null angegeben ist, weist der Dienstanbieter dem Winsock SPI-Client einen eindeutigen Port mit einem Wert zwischen 1024 und 5000 zu. Der SPI-Client kann LPWSPGetSockName nach LPWSPBind verwenden, um die Adresse und den Ihm zugewiesenen Port zu ermitteln. Beachten Sie jedoch, dass LPWSPGetSockOpt , wenn die Internetadresse gleich INADDR_ANY ist, die Adresse nicht unbedingt angeben kann, bis der Socket verbunden ist, da mehrere Adressen gültig sein können, wenn der Host mehrfach vernetzt ist.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Kopfzeile | ws2spi.h |