Bagikan melalui


Fungsi WSARecvDisconnect (winsock2.h)

Fungsi WSARecvDisconnect mengakhiri penerimaan pada soket, dan mengambil data pemutusan jika soket berorientasi koneksi.

Sintaks

int WSAAPI WSARecvDisconnect(
  [in]  SOCKET   s,
  [out] LPWSABUF lpInboundDisconnectData
);

Parameter

[in] s

Deskriptor yang mengidentifikasi soket.

[out] lpInboundDisconnectData

Penunjuk ke data pemutusan masuk.

Mengembalikan nilai

Jika tidak ada kesalahan yang terjadi, WSARecvDisconnect mengembalikan nol. Jika tidak, nilai SOCKET_ERROR dikembalikan, dan kode kesalahan tertentu dapat diambil dengan memanggil WSAGetLastError.

Kode kesalahan Makna
WSANOTINITIALISED
Panggilan WSAStartup yang berhasil harus terjadi sebelum menggunakan fungsi ini.
WSAENETDOWN
Subsistem jaringan gagal.
WSAEFAULT
Buffer yang dirujuk oleh parameter lpInboundDisconnectData terlalu kecil.
WSAENOPROTOOPT
Data pemutusan sambungan tidak didukung oleh keluarga protokol yang ditunjukkan. Perhatikan bahwa implementasi TCP/IP yang tidak mendukung data pemutusan tidak diperlukan untuk mengembalikan kode kesalahan WSAENOPROTOOPT. Lihat bagian keterangan untuk informasi tentang implementasi Microsoft dari TCP/IP.
WSAEINPROGRESS
Pemblokiran panggilan Windows Sockets 1.1 sedang berlangsung, atau penyedia layanan masih memproses fungsi panggilan balik.
WSAENOTCONN
Soket tidak tersambung (hanya soket berorientasi koneksi).
WSAENOTSOCK
Deskriptor bukan soket.

Keterangan

Fungsi WSARecvDisconnect digunakan pada soket berorientasi koneksi untuk menonaktifkan penerimaan dan mengambil data pemutusan masuk dari pihak jarak jauh. Ini setara dengan pematian (SD_RECEIVE), kecuali bahwa WSARecvDisconnect juga memungkinkan penerimaan data pemutusan (dalam protokol yang mendukungnya).

Setelah fungsi ini berhasil diterbitkan, penerimaan berikutnya pada soket akan dilarang. Memanggil WSARecvDisconnect tidak berpengaruh pada lapisan protokol yang lebih rendah. Untuk soket TCP, jika masih ada data yang diantrekan pada soket yang menunggu untuk diterima, atau data tiba kemudian, koneksi diatur ulang, karena data tidak dapat dikirimkan kepada pengguna. Untuk UDP, datagram masuk diterima dan diantrekan. Tidak akan ada paket kesalahan ICMP yang dihasilkan.

Catatan Implementasi asli TCP/IP pada Windows tidak mendukung pemutusan sambungan data. Data terputus hanya didukung dengan penyedia Windows Sockets yang memiliki bendera XP1_DISCONNECT_DATA dalam struktur WSAPROTOCOL_INFO mereka. Gunakan fungsi WSAEnumProtocols untuk mendapatkan struktur WSAPROTOCOL_INFO untuk semua penyedia yang diinstal.
 
Agar berhasil menerima data pemutusan masuk, aplikasi harus menggunakan mekanisme lain untuk menentukan bahwa sirkuit telah ditutup. Misalnya, aplikasi perlu menerima pemberitahuan FD_CLOSE, untuk menerima nilai pengembalian nol, atau untuk menerima kode kesalahan WSAEDISCON atau WSAECONNRESET dariWSARecvrev/.

Fungsi WSARecvDisconnect tidak menutup soket, dan sumber daya yang terpasang pada soket tidak akan dikosongkan sampai closesocket dipanggil.

Fungsi WSARecvDisconnect tidak memblokir terlepas dari pengaturan SO_LINGER pada soket.

Aplikasi tidak boleh mengandalkan untuk dapat menggunakan kembali soket setelah terputus menggunakan WSARecvDisconnect. Secara khusus, penyedia Windows Sockets tidak diperlukan untuk mendukung penggunaan koneksi atau WSAConnect pada soket tersebut.

Catatan Saat mengeluarkan panggilan Winsock pemblokiran seperti WSARecvDisconnect, Winsock mungkin perlu menunggu peristiwa jaringan sebelum panggilan dapat selesai. Winsock melakukan penantian yang dapat diperingatkan dalam situasi ini, yang dapat terganggu oleh panggilan prosedur asinkron (APC) yang dijadwalkan pada utas yang sama. Mengeluarkan panggilan Winsock pemblokiran lain di dalam APC yang mengganggu panggilan Winsock pemblokiran yang sedang berlangsung pada utas yang sama akan menyebabkan perilaku yang tidak terdefinisi, dan tidak boleh dicoba oleh klien Winsock.
 

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 winsock2.h
Pustaka Ws2_32.lib
DLL Ws2_32.dll

Lihat juga

WSAConnect

WSAEnumProtocols

WSAGetLastError

WSAPROTOCOL_INFO

WSARecv

Fungsi Winsock

Referensi Winsock

closesocket

sambungkan

soket