Bagikan melalui


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
WSAENETDOWN
Subsistem jaringan gagal.
WSAEFAULT
Salah satu optval atau parameter optlen bukan bagian yang valid dari ruang alamat pengguna, atau parameter optlen terlalu kecil.
WSAEINVAL
Tingkat tidak diketahui atau tidak valid.
WSAEINPROGRESS
Fungsi dipanggil saat panggilan balik sedang berlangsung.
WSAENOPROTOOPT
Opsi tidak diketahui atau tidak didukung oleh keluarga protokol yang ditunjukkan.
WSAENOTSOCK
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.

SO_KEEPALIVE

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

LPWSPSetSockOpt

LPWSPSocket