Fungsi panggilan balik LPWSPSELECT (ws2spi.h)
Fungsi
Sintaksis
LPWSPSELECT Lpwspselect;
int Lpwspselect(
[in] int nfds,
[in, out] fd_set *readfds,
[in, out] fd_set *writefds,
[in, out] fd_set *exceptfds,
[in] const timeval *timeout,
[out] LPINT lpErrno
)
{...}
Parameter
[in] nfds
Diabaikan dan disertakan hanya demi kompatibilitas.
[in, out] readfds
Penunjuk opsional ke sekumpulan soket yang akan diperiksa keterbacaannya.
[in, out] writefds
Penunjuk opsional ke sekumpulan soket yang akan diperiksa untuk ditulis.
[in, out] exceptfds
Penunjuk opsional ke sekumpulan soket yang akan diperiksa kesalahannya.
[in] timeout
Waktu maksimum untuk
[out] lpErrno
Penunjuk ke kode kesalahan.
Mengembalikan nilai
Fungsi LPWSPSelect mengembalikan jumlah total deskriptor yang siap dan terkandung dalam struktur fd_set, atau SOCKET_ERROR jika terjadi kesalahan. Jika nilai pengembalian SOCKET_ERROR, kode kesalahan tertentu tersedia di lpErrno.
Kode Kesalahan | Arti |
---|---|
|
Penyedia layanan Windows Sockets tidak dapat mengalokasikan sumber daya yang diperlukan untuk operasi internalnya, atau readfd |
|
Subsistem jaringan gagal. |
|
Nilai batas waktu |
|
(Pemblokiran) panggilan dibatalkan melalui LPWSPCancelBlockingCall. |
|
Pemblokiran panggilan Windows Sockets sedang berlangsung, atau penyedia layanan masih memproses fungsi panggilan balik. |
Salah satu set deskriptor berisi entri yang bukan soket. |
Komentar
Fungsi ini digunakan untuk menentukan status satu atau beberapa soket. Untuk setiap soket, pemanggil dapat meminta informasi tentang status baca, tulis, atau kesalahan. Kumpulan soket yang statusnya diminta ditunjukkan oleh struktur fd_set. Semua entri dalam
Parameter readfds mengidentifikasi soket yang akan diperiksa keterbacaannya. Jika soket saat ini mendengarkan melalui
Untuk soket berorientasi koneksi, keterbacaan juga dapat menunjukkan bahwa permintaan dekat telah diterima dari serekan. Jika sirkuit virtual ditutup dengan baik, maka LPWSPRecv
Parameter writefds mengidentifikasi soket yang akan diperiksa untuk ditulis:
- Jika soket tersambung melalui LPWSPConnect, writability berarti bahwa pembentukan koneksi berhasil diselesaikan.
- Jika soket tidak dalam proses mendengarkan melalui LPWSPConnect, writability berarti bahwa LPWSPSend atau LPWSPSendTo dijamin berhasil.
Namun, mereka dapat memblokir soket pemblokiran jika lensa melebihi jumlah ruang buffer sistem keluar yang tersedia. Tidak ditentukan berapa lama jaminan ini dapat diasumsikan valid, terutama di lingkungan multithreaded.
Parameter exceptfds mengidentifikasi soket yang akan diperiksa keberadaan data OOB atau kondisi kesalahan yang luar biasa. Perhatikan bahwa data OOB hanya akan dilaporkan dengan cara ini jika opsi SO_OOBINLINE FALSE. Jika soket membuat koneksi LPWSPConnect (nonblocking), kegagalan upaya koneksi ditunjukkan dalam kecualifds. Spesifikasi ini tidak menentukan kesalahan lain mana yang akan disertakan.
Setiap dua
Ringkasan: Soket akan diidentifikasi dalam set tertentu saat LPWSPSelect mengembalikan sesuai dengan yang berikut ini.
Tiga makro dan satu fungsi upcall didefinisikan dalam file header Ws2spi.h untuk memanipulasi dan memeriksa set deskriptor. Variabel FD_SETSIZE menentukan jumlah maksimum deskriptor dalam satu set. (Nilai default FD_SETSIZE adalah 64, yang dapat dimodifikasi oleh #defining FD_SETSIZE ke nilai lain sebelum #including Ws2spi.h.) Secara internal, handel soket dalam fd_set tidak direpresentasikan sebagai bendera bit seperti di Berkeley UNIX. Representasi data mereka buram. Penggunaan makro ini akan mempertahankan portabilitas perangkat lunak antara lingkungan soket yang berbeda.
Makro yang akan dimanipulasi dan diperiksa konten fd_set adalah:
-
FD_CLR(, *set)
-
Menghapus deskriptor
dariset . -
FD_SET(, *set)
-
Menambahkan deskriptor
ke set . -
FD_ZERO(* set ) -
Menginisialisasi set
ke set null .
Fungsi upcall yang digunakan untuk memeriksa keanggotaan adalah:
-
intWPUFDIsSet ( SOCKET s ,FD_SET FAR set ); -
yang akan mengembalikan nonzero jika s adalah anggota yang ditetapkan atau nol.
Parameter
Nota
Fungsi LPWSPSelect tidak berpengaruh pada persistensi peristiwa soket yang terdaftar di LPWSPAsyncSelect atau LPWSPEventSelect.
Persyaratan
Syarat | 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
LPWSPRecv
LPWSPSend