Fungsi panggilan balik LPWSPGETSOCKOPT (ws2spi.h)
Fungsi LPWSPGetSockOpt mengambil opsi soket.
Sintaks
LPWSPGETSOCKOPT Lpwspgetsockopt;
int Lpwspgetsockopt(
SOCKET s,
int level,
int optname,
char *optval,
LPINT optlen,
LPINT lpErrno
)
{...}
Parameter
s
Deskriptor yang mengidentifikasi soket.
level
Tingkat di mana opsi didefinisikan; tingkat yang didukung termasuk SOL_SOCKET. (Lihat lampiran untuk tingkat yang lebih spesifik protokol.)
optname
Opsi soket yang nilainya akan diambil.
optval
Penunjuk ke buffer tempat nilai untuk opsi yang diminta akan dikembalikan.
optlen
Penunjuk ke ukuran, dalam byte, dari buffer optval .
lpErrno
Penunjuk ke kode kesalahan.
Mengembalikan nilai
Jika tidak ada kesalahan yang terjadi, LPWSPGetSockOpt mengembalikan nol. Jika tidak, nilai SOCKET_ERROR dikembalikan, dan kode kesalahan tertentu tersedia di lpErrno.
Kode Kesalahan | Makna |
---|---|
Subsistem jaringan gagal. | |
Salah satu optval atau parameter optlen bukan bagian yang valid dari ruang alamat pengguna, atau parameter optlen terlalu kecil. | |
Tingkat tidak diketahui atau tidak valid. | |
Fungsi dipanggil saat panggilan balik sedang berlangsung. | |
Opsi tidak diketahui atau tidak didukung oleh keluarga protokol yang ditunjukkan. | |
Deskriptor bukan soket. |
Keterangan
Fungsi LPWSPGetSockOpt mengambil nilai saat ini untuk opsi soket yang terkait dengan soket jenis apa pun, dalam status apa pun, dan menyimpan hasilnya dalam optval. Opsi dapat ada di beberapa tingkat protokol, tetapi selalu ada di tingkat soket paling atas. Opsi memengaruhi operasi soket, seperti perutean paket dan transfer data OOB.
Nilai yang terkait dengan opsi yang dipilih dikembalikan dalam optval buffer. Bilangan bulat yang diarahkan oleh optlen awalnya harus berisi ukuran buffer ini; saat dikembalikan, itu akan diatur ke ukuran nilai yang dikembalikan. Untuk SO_LINGER, ini akan menjadi ukuran struktur yang masih ada; untuk sebagian besar opsi lain, itu akan menjadi ukuran bilangan bulat.
Klien Windows Sockets SPI bertanggung jawab untuk mengalokasikan ruang memori apa pun yang diarahkan ke secara langsung atau tidak langsung oleh salah satu parameter yang ditentukannya.
Jika opsi tidak pernah diatur dengan LPWSPSetSockOpt, maka LPWSPGetSockOpt mengembalikan nilai default untuk opsi tersebut.
Untuk informasi selengkapnya tentang opsi soket, lihat Opsi Soket.
level = SOL_SOCKET
Nilai | Jenis | Makna | Default |
---|---|---|---|
SO_ACCEPTCONN | BOOL | Soket mendengarkan melalui LPWSPListen. | FALSE kecuali LPWSPListen telah dilakukan. |
SO_BROADCAST | BOOL | Soket dikonfigurasi untuk transmisi dan penerimaan pesan siaran. | FALSE |
SO_DEBUG | BOOL | Penelusuran kesalahan diaktifkan. | FALSE |
SO_DONTLINGER | BOOL | Jika true, opsi SO_LINGER dinonaktifkan. | TRUE |
SO_DONTROUTE | BOOL | Perutean dinonaktifkan. Pengaturan opsi soket ini berhasil tetapi diabaikan pada soket AF_INET; gagal pada soket AF_INET6 dengan WSAENOPROTOOPT . Opsi ini tidak didukung pada soket ATM (menghasilkan kesalahan). | FALSE |
SO_ERROR | bilangan bulat | Mengambil status kesalahan dan menghapus. | 0 |
SO_GROUP_ID | GROUP | Dicadangkan. | Null |
SO_GROUP_PRIORITY | bilangan bulat | Dicadangkan. | 0 |
SO_KEEPALIVE | BOOL | Keepalives sedang dikirim. Tidak didukung pada soket ATM (menghasilkan kesalahan). | FALSE |
SO_LINGER | Struktur LINGER | Mengembalikan opsi linger saat ini. | 1 aktif (default), 0 nonaktif |
SO_MAX_MSG_SIZE | bilangan bulat tidak bertanda | Ukuran maksimum pesan untuk jenis soket berorientasi pesan (misalnya, SOCK_DGRAM). Tidak memiliki arti untuk soket berorientasi aliran. | Dependen implementasi |
SO_OOBINLINE | BOOL | Data OOB sedang diterima di aliran data normal. | FALSE |
SO_PROTOCOL_INFO | struktur WSAPROTOCOL_INFO | Deskripsi informasi protokol untuk protokol yang terikat ke soket ini. | Dependen protokol |
SO_RCVBUF | bilangan bulat | Total ruang buffer per soket yang disediakan untuk menerima. Ini tidak terkait dengan SO_MAX_MSG_SIZE dan tidak selalu sesuai dengan ukuran jendela penerima TCP. | Dependen implementasi |
SO_REUSEADDR | BOOL | Soket dapat terikat ke alamat yang sudah digunakan. Opsi ini tidak berlaku pada soket ATM. | FALSE. |
SO_SNDBUF | bilangan bulat | Total ruang buffer per soket yang disediakan untuk pengiriman. Ini tidak terkait dengan SO_MAX_MSG_SIZE dan tidak selalu sesuai dengan ukuran jendela pengiriman TCP. | Dependen implementasi |
SO_TYPE | bilangan bulat | Jenis soket (misalnya, SOCK_STREAM). | Seperti yang dibuat dengan LPWSPSocket">LPWSPSocket |
PVD_CONFIG | Dependen Penyedia Layanan | Objek struktur data buram dari penyedia layanan yang terkait dengan soket. Objek ini menyimpan informasi konfigurasi penyedia layanan saat ini. Format yang tepat dari struktur data ini adalah khusus penyedia layanan. | Dependen implementasi |
Memanggil LPWSPGetSockOpt dengan opsi yang tidak didukung akan mengakibatkan kode kesalahan WSAENOPROTOOPT dikembalikan di lpErrno.
-
SO_DEBUG
-
Penyedia layanan Windows Sockets didorong (tetapi tidak diperlukan) untuk menyediakan informasi debug output jika opsi SO_DEBUG diatur oleh klien Windows Sockets SPI. Mekanisme untuk menghasilkan informasi debug dan formulir yang diperlukan berada di luar cakupan spesifikasi ini.
-
SO_ERROR
-
Opsi SO_ERROR mengembalikan dan mengatur ulang kode kesalahan berbasis per soket (yang belum tentu sama dengan kode per-thread-error yang dikelola oleh WS2_32.DLL). Panggilan Windows Sockets yang berhasil pada soket tidak mengatur ulang kode kesalahan berbasis soket yang dikembalikan oleh opsi SO_ERROR.
-
SO_GROUP_ID
-
Dicadangkan. Nilai ini harus NULL.
-
SO_GROUP_PRIORITY
-
Dicadangkan.
-
Klien Windows Sockets SPI dapat meminta agar penyedia layanan TCP/IP mengaktifkan penggunaan paket tetap aktif pada koneksi TCP dengan mengaktifkan opsi soket SO_KEEPALIVE . Penyedia Windows Sockets tidak perlu mendukung penggunaan tetap hidup: jika ya, semantik yang tepat bersifat spesifik implementasi tetapi harus sesuai dengan bagian 4.2.3.6 dari RFC 1122: Persyaratan untuk Host Internet—Lapisan Komunikasi. (Sumber daya ini mungkin hanya tersedia dalam bahasa Inggris.) Jika koneksi dihilangkan sebagai hasil dari tetap hidup, kode kesalahan WSAENETRESET dikembalikan ke panggilan apa pun yang sedang berlangsung di soket, dan setiap panggilan berikutnya akan gagal dengan WSAENOTCONN .
-
SO_LINGER
-
SO_LINGER mengontrol tindakan yang diambil ketika data yang tidak dikirim diantrekan pada soket dan LPWSPCloseSocket dilakukan. Lihat LPWSPCloseSocket untuk deskripsi cara pengaturan SO_LINGER memengaruhi semantik LPWSPCloseSocket. Klien Windows Sockets SPI mendapatkan perilaku yang diinginkan dengan membuat struktur LINGER (ditujukkan oleh parameter optval ) dengan elemen-elemen berikut:
}
-
SO_MAX_MSG_SIZE
-
Ini adalah opsi soket get-only, yang menunjukkan ukuran maksimum pesan pengiriman keluar untuk jenis soket berorientasi pesan (misalnya, SOCK_DGRAM) seperti yang diterapkan oleh penyedia layanan. Ini tidak memiliki arti untuk soket berorientasi aliran byte. Tidak ada ketentuan untuk menentukan ukuran pesan masuk maksimum.
-
SO_PROTOCOL_INFOW
-
Ini adalah opsi get-only yang memasok struktur WSAPROTOCOL_INFO yang terkait dengan soket ini. Lihat WSCEnumProtocols untuk informasi selengkapnya tentang struktur ini.
-
SO_SNDBUF
-
Ketika penyedia layanan Windows Sockets mendukung opsi SO_RCVBUF dan SO_SNDBUF, klien Windows Sockets SPI dapat menggunakan LPWSPSetSockOpt untuk meminta ukuran buffer yang berbeda (lebih besar atau lebih kecil). Panggilan dapat berhasil meskipun penyedia layanan tidak menyediakan seluruh jumlah yang diminta. Klien Windows Sockets SPI harus memanggil fungsi ini dengan opsi yang sama untuk memeriksa ukuran buffer yang sebenarnya disediakan.
-
SO_REUSEADDR
-
Secara default, soket tidak dapat diikat (lihat LPWSPBind) ke alamat lokal yang sudah digunakan. Namun, terkadang, mungkin diinginkan untuk menggunakan kembali alamat dengan cara ini. Karena setiap koneksi diidentifikasi secara unik oleh kombinasi alamat lokal dan jarak jauh, tidak ada masalah dengan memiliki dua soket yang terikat ke alamat lokal yang sama selama alamat jarak jauh berbeda. Untuk memberi tahu penyedia Soket Windows bahwa LPWSPBind pada soket harus diizinkan untuk mengikat ke alamat lokal yang sudah digunakan oleh soket lain, klien Windows Sockets SPI harus mengatur opsi soket SO_REUSEADDR untuk soket sebelum mengeluarkan LPWSPBind. Perhatikan bahwa opsi hanya ditafsirkan pada saat LPWSPBind. Oleh karena itu, tidak perlu (tetapi tidak berbahaya) untuk mengatur opsi pada soket yang tidak terikat ke alamat yang ada, dan mengatur atau mengatur ulang opsi setelah LPWSPBind tidak berpengaruh pada ini atau soket lainnya.
-
PVD_CONFIG
-
Opsi ini mengambil objek struktur data buram dari penyedia layanan yang terkait dengan soket. Objek ini menyimpan informasi konfigurasi penyedia layanan saat ini. Format yang tepat dari struktur data ini khusus untuk penyedia layanan.
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