Bagikan melalui


Fungsi panggilan balik LPWSPBIND (ws2spi.h)

Fungsi LPWSPBind mengaitkan alamat lokal (yaitu, nama) dengan soket.

Sintaks

LPWSPBIND Lpwspbind;

int Lpwspbind(
  [in]  SOCKET s,
  [in]  const sockaddr *name,
  [in]  int namelen,
  [out] LPINT lpErrno
)
{...}

Parameter

[in] s

Deskriptor yang mengidentifikasi soket yang tidak terikat.

[in] name

Alamat untuk ditetapkan ke soket, dalam bentuk struktur sockaddr .

Kecuali untuk anggota sa_family , konten sockaddr dinyatakan dalam urutan byte jaringan. Di Windows Sockets 2, parameter nama tidak ditafsirkan secara ketat sebagai penunjuk ke struktur sockaddr . Ini dilemparkan dengan cara ini untuk kompatibilitas Winsock. Struktur aktual ditafsirkan secara berbeda dalam konteks keluarga alamat yang berbeda. Satu-satunya persyaratan adalah bahwa u_short pertama adalah keluarga alamat dan ukuran total buffer memori, dalam byte, adalah namelen.

[in] namelen

Panjangnya, dalam byte, struktur yang ditujukkan oleh parameter nama .

[out] lpErrno

Penunjuk ke kode kesalahan.

Mengembalikan nilai

Jika tidak ada kesalahan yang terjadi, LPWSPBind mengembalikan nol. Jika tidak, ia mengembalikan SOCKET_ERROR, dan kode kesalahan tertentu tersedia di lpErrno.

Kode Kesalahan Makna
WSAENETDOWN
Subsistem jaringan gagal.
WSAEADDRINUSE
Beberapa proses di komputer lokal telah terikat ke alamat yang sepenuhnya memenuhi syarat yang sama (misalnya, alamat IP dan port dalam kasus **AF_INET**) dan soket belum ditandai untuk memungkinkan penggunaan kembali alamat dengan SO_REUSEADDR. (Lihat opsi soket SO_REUSEADDR di bawah LPWSPSetSockOpt.)
WSAEADDRNOTAVAIL
Alamat yang ditentukan bukan alamat yang valid untuk komputer ini.
WSAEFAULT
Nama atau parameter namelen bukan bagian yang valid dari ruang alamat pengguna, parameter namelen terlalu kecil, parameter nama berisi format alamat yang salah untuk keluarga alamat terkait, atau dua byte pertama dari blok memori yang ditentukan oleh nama tidak cocok dengan keluarga alamat yang terkait dengan deskriptor soket.
WSAEINPROGRESS
Fungsi dipanggil saat panggilan balik sedang berlangsung.
WSAEINVAL
Soket sudah terikat ke alamat.
WSAENOBUFS
Tidak tersedia cukup buffer, ada terlalu banyak koneksi.
WSAENOTSOCK
Deskriptor bukan soket.

Keterangan

Fungsi LPWSPBind digunakan pada soket tanpa koneksi atau berorientasi koneksi yang tidak terhubung, sebelum panggilan berikutnya ke fungsi LPWSPConnect atau LPWSPListen . Ketika soket dibuat dengan LPWSPSocket, soket tersebut ada di namespace (keluarga alamat), tetapi tidak memiliki nama atau alamat lokal yang ditetapkan. Fungsi LPWSPBind menetapkan asosiasi lokal soket dengan menetapkan nama lokal ke soket yang tidak disebutkan namanya.

Sebagai contoh, dalam keluarga alamat Internet, nama terdiri dari tiga bagian: keluarga alamat, alamat host, dan nomor port yang mengidentifikasi klien Winsock SPI. Di Windows Sockets 2, parameter nama tidak ditafsirkan secara ketat sebagai penunjuk ke struktur sockaddr . Penyedia layanan bebas menganggapnya sebagai penunjuk ke blok memori namelen ukuran. Dua byte pertama dalam blok ini (sesuai dengan sa_family dalam deklarasi sockaddr ) harus berisi keluarga alamat yang digunakan untuk membuat soket. Jika tidak, kesalahan WSAEFAULT akan ditunjukkan.

Jika klien Windows Sockets 2 SPI tidak peduli alamat lokal apa yang ditetapkan padanya, itu akan menentukan nilai konstanta manifes ADDR_ANY untuk anggota sa_data parameter nama . Ini menginstruksikan penyedia layanan untuk menggunakan alamat jaringan yang sesuai. Untuk TCP/IP, jika port ditentukan sebagai nol, penyedia layanan akan menetapkan port unik ke klien Winsock SPI dengan nilai antara 1024 dan 5000. Klien SPI dapat menggunakan LPWSPGetSockName setelah LPWSPBind untuk mempelajari alamat dan port yang telah ditetapkan untuknya. Namun, perhatikan bahwa jika alamat Internet sama dengan INADDR_ANY, LPWSPGetSockOpt tidak akan selalu dapat menyediakan alamat sampai soket terhubung, karena beberapa alamat dapat valid jika host multihomed.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header ws2spi.h

Lihat juga

sockaddr

LPWSPConnect

LPWSPGetSockName

LPWSPListen

WSPSetSockOpt

LPWSPSocket