Fungsi panggilan balik LPWSPSOCKET (ws2spi.h)

Fungsi LPWSPSocket membuat soket. Untuk informasi tentang bagian yang dimainkan oleh LPWSPSocket dalam membuat soket bersama, lihat Soket bersama dan Soket bersama di SPI.

Sintaks

LPWSPSOCKET Lpwspsocket;

SOCKET Lpwspsocket(
  [in]  int af,
  [in]  int type,
  [in]  int protocol,
  [in]  LPWSAPROTOCOL_INFOW lpProtocolInfo,
  [in]  GROUP g,
        DWORD dwFlags,
  [out] LPINT lpErrno
)
{...}

Parameter

[in] af

Spesifikasi keluarga alamat.

[in] type

Ketik spesifikasi untuk soket baru.

[in] protocol

Protokol yang akan digunakan dengan soket yang khusus untuk keluarga alamat yang ditunjukkan.

[in] lpProtocolInfo

Penunjuk ke struktur WSAProtocol_Info yang menentukan karakteristik soket yang akan dibuat.

[in] g

Dicadangkan.

dwFlags

Spesifikasi atribut soket.

[out] lpErrno

Arahkan ke kode kesalahan.

Mengembalikan nilai

Jika tidak ada kesalahan yang terjadi, LPWSPSocket mengembalikan deskriptor yang mereferensikan soket baru. Jika tidak, nilai INVALID_SOCKET dikembalikan, dan kode kesalahan tertentu tersedia di lpErrno.

Kode kesalahan Makna
WSAENETDOWN
Subsistem jaringan gagal.
WSAEAFNOSUPPORT
Keluarga alamat yang ditentukan tidak didukung.
WSAEINPROGRESS
Pemblokiran panggilan Windows Sockets sedang berlangsung, atau penyedia layanan masih memproses fungsi panggilan balik.
WSAEMFILE
Tidak ada lagi deskriptor soket yang tersedia.
WSAENOBUFS
Tidak ada ruang buffer yang tersedia. Soket tidak dapat dibuat.
WSAEPROTONOSUPPORT
Protokol yang ditentukan tidak didukung.
WSAEPROTOTYPE
Protokol yang ditentukan adalah tipe yang salah untuk soket ini.
WSAESOCKTNOSUPPORT
Jenis soket yang ditentukan tidak didukung dalam keluarga alamat ini.
WSAEINVAL
Parameter g yang ditentukan tidak valid.
 

Keterangan

Fungsi LPWSPSocket menyebabkan deskriptor soket dan sumber daya terkait dialokasikan. Secara default, soket yang dibuat tidak akan memiliki atribut yang tumpang tindih. Penyedia Soket Windows didorong untuk diwujudkan sebagai sistem file yang dapat diinstal Windows, dan menyediakan handel file sistem sebagai deskriptor soket. Penyedia ini harus memanggil WPUModifyIFSHandle sebelum kembali dari fungsi ini. Untuk penyedia Windows Sockets nonfile-system, WPUCreateSocketHandle harus digunakan untuk memperoleh deskriptor soket unik dari Ws2_32.dll sebelum kembali dari fungsi ini. Lihat
Alokasi Deskriptor untuk informasi lebih lanjut.

Nilai untuk af, jenis, dan protokol adalah nilai yang disediakan oleh aplikasi dalam soket fungsi API atau WSASocket yang sesuai. Penyedia layanan bebas mengabaikan atau memperhatikan salah satu atau semua nilai ini yang sesuai untuk protokol tertentu. Namun, penyedia harus bersedia menerima nilai nol untuk af dan jenis, karena Ws2_32.dll menganggap ini sebagai nilai kartubebas. Juga nilai konstanta manifes FROM_PROTOCOL_INFO harus diterima untuk salah satu af, jenis, dan protokol. Nilai ini menunjukkan bahwa aplikasi Windows Sockets 2 perlu menggunakan nilai yang sesuai dari struktur WSAProtocol_Info (iAddressFamily, iSocketType, iProtocol).

Parameter dwFlags dapat digunakan untuk menentukan atribut soket dengan menggunakan operator OR bitwise dengan salah satu bendera berikut.

Bendera Makna
WSA_FLAG_OVERLAPPED Bendera ini menyebabkan soket yang tumpang tindih dibuat. Soket yang tumpang tindih dapat menggunakan LPWSPSend, LPWSPSendTo, LPWSPRecv, LPWSPRecvFrom, dan LPWSPIoctl untuk operasi I/O yang tumpang tindih, yang memungkinkan beberapa operasi dimulai dan dalam proses secara bersamaan. Semua fungsi yang memungkinkan operasi yang tumpang tindih juga mendukung penggunaan yang tidak tumpang tindih pada soket yang tumpang tindih jika nilai untuk parameter yang terkait dengan operasi yang tumpang tindih adalah null.
WSA_FLAG_MULTIPOINT_C_ROOT Menunjukkan bahwa soket yang dibuat akan menjadi c_root dalam sesi multipoint. Hanya diperbolehkan jika sarana kontrol berakar ditunjukkan dalam struktur WSAProtocol_Info protokol.
WSA_FLAG_MULTIPOINT_C_LEAF Menunjukkan bahwa soket yang dibuat akan menjadi c_leaf dalam sesi multicast. Hanya diperbolehkan jika XP1_SUPPORT_MULTIPOINT ditunjukkan dalam struktur WSAProtocol_Info protokol.
WSA_FLAG_MULTIPOINT_D_ROOT Menunjukkan bahwa soket yang dibuat akan menjadi d_root dalam sesi multipoint. Hanya diperbolehkan jika bidang data berakar ditunjukkan dalam struktur WSAProtocol_Info protokol.
WSA_FLAG_MULTIPOINT_D_LEAF Menunjukkan bahwa soket yang dibuat akan menjadi d_leaf dalam sesi multipoint. Hanya diperbolehkan jika XP1_SUPPORT_MULTIPOINT ditunjukkan dalam struktur WSAProtocol_Info protokol.

Catatan

Untuk soket multipoint, tepat satu WSA_FLAG_MULTIPOINT_C_ROOT atau WSA_FLAG_MULTIPOINT_C_LEAF harus ditentukan, dan tepat salah satu dari WSA_FLAG_MULTIPOINT_D_ROOT atau WSA_FLAG_MULTIPOINT_D_LEAF harus ditentukan. Lihat Protocol-Independent Multicast dan Multipoint di SPI untuk informasi tambahan.

Soket berorientasi koneksi seperti SOCK_STREAM menyediakan koneksi dupleks penuh, dan harus dalam keadaan tersambung sebelum data apa pun dapat dikirim atau diterima di dalamnya. Koneksi ke soket lain dibuat dengan panggilan LPWSPConnect . Setelah tersambung, data dapat ditransfer menggunakan panggilan LPWSPSend dan LPWSPRecv . Ketika sesi telah selesai, LPWSPCloseSocket harus dilakukan.

Protokol komunikasi yang digunakan untuk mengimplementasikan soket yang andal dan berorientasi koneksi memastikan bahwa data tidak hilang atau diduplikasi. Jika data yang protokol serekannya memiliki ruang buffer tidak dapat berhasil ditransmisikan dalam jangka waktu yang wajar, koneksi dianggap rusak dan panggilan berikutnya akan gagal dengan kode kesalahan yang diatur ke WSAETIMEDOUT.

Soket tanpa koneksi dan berorientasi pesan memungkinkan pengiriman dan penerimaan datagram ke dan dari serekan arbitrer menggunakan LPWSPSendTo dan LPWSPRecvFrom. Jika soket seperti itu terhubung dengan menggunakan LPWSPConnect ke serekan tertentu, datagram dapat dikirim ke peer tersebut menggunakan LPWSPSend dan dapat diterima dari (hanya) peer ini menggunakan LPWSPRecv.

Dukungan untuk soket dengan jenis SOCK RAW tidak diperlukan tetapi penyedia layanan didorong untuk mendukung soket mentah setiap kali masuk akal untuk melakukannya.

Penyedia layanan berlapis menyediakan implementasi fungsi ini, tetapi juga merupakan klien dari fungsi ini jika dan ketika memanggil LPWSPSocket dari lapisan berikutnya dalam rantai protokol. Beberapa pertimbangan khusus berlaku untuk parameter lpProtocolInfo fungsi ini karena disebarluaskan ke bawah melalui lapisan rantai protokol.

Jika lapisan berikutnya dalam rantai protokol adalah lapisan lain maka ketika LPWSPSocket lapisan berikutnya dipanggil, lapisan ini harus meneruskan ke lapisan berikutnya lpProtocolInfo yang mereferensikan struktur WSAProtocol_Info yang tidak dimodifikasi yang sama dengan informasi rantai yang tidak dimodifikasi yang sama. Namun, jika lapisan berikutnya adalah protokol dasar (yaitu, elemen terakhir dalam rantai), lapisan ini melakukan substitusi saat memanggil LPWSPSocket penyedia dasar. Dalam hal ini, struktur WSAPROTOCOL_INFO penyedia dasar harus dirujuk oleh parameter lpProtocolInfo .

Salah satu manfaat penting dari kebijakan ini adalah bahwa penyedia layanan dasar tidak perlu menyadari rantai protokol.

Kebijakan penyebaran yang sama ini berlaku saat menyebarkan struktur WSAProtocol_Info melalui urutan berlapis fungsi lain seperti LPWSPAddressToString, LPWSPDuplicateSocket, WSPStartup, atau LPWSPStringToAddress.

Persyaratan

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

Lihat juga