Share via


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
WSAENETDOWN
Fehler beim Netzwerksubsystem.
WSAEADDRINUSE
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.)
WSAEADDRNOTAVAIL
Die angegebene Adresse ist keine gültige Adresse für diesen Computer.
WSAEFAULT
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.
WSAEINPROGRESS
Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird.
WSAEINVAL
Der Socket ist bereits an eine Adresse gebunden.
WSAENOBUFS
Es sind nicht genügend Puffer verfügbar, es gibt zu viele Verbindungen.
WSAENOTSOCK
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

Weitere Informationen

sockaddr

LPWSPConnect

LPWSPGetSockName

LPWSPListen

WSPSetSockOpt

LPWSPSocket