Fungsi WSAAsyncSelect (winsock.h)
[Fungsi WSAAsyncSelect tersedia untuk digunakan dalam sistem operasi yang ditentukan di bagian Persyaratan. Ini dapat diubah atau tidak tersedia dalam versi berikutnya. Daripada menggunakan I/O Gaya-Pilih, gunakan I/O tumpang tindih dan Objek Peristiwa dengan WinSock2.]
Fungsi WSAAsyncSelect meminta pemberitahuan peristiwa jaringan berbasis pesan Windows untuk soket.
Sintaks
int WSAAsyncSelect(
[in] SOCKET s,
[in] HWND hWnd,
[in] u_int wMsg,
[in] long lEvent
);
Parameter
[in] s
Deskriptor yang mengidentifikasi soket tempat pemberitahuan peristiwa diperlukan.
[in] hWnd
Handel yang mengidentifikasi jendela yang akan menerima pesan ketika peristiwa jaringan terjadi.
[in] wMsg
Pesan yang akan diterima ketika peristiwa jaringan terjadi.
[in] lEvent
Bitmask yang menentukan kombinasi peristiwa jaringan di mana aplikasi tertarik.
Nilai kembali
Jika fungsi WSAAsyncSelect berhasil, nilai yang dikembalikan adalah nol, asalkan deklarasi minat aplikasi dalam set peristiwa jaringan berhasil. Jika tidak, nilai SOCKET_ERROR dikembalikan, dan nomor kesalahan tertentu dapat diambil dengan memanggil WSAGetLastError.
Kode kesalahan | Makna |
---|---|
Panggilan WSAStartup yang berhasil harus terjadi sebelum menggunakan fungsi ini. | |
Subsistem jaringan gagal. | |
Salah satu parameter yang ditentukan tidak valid, seperti handel jendela yang tidak merujuk ke jendela yang ada, atau soket yang ditentukan dalam status tidak valid. | |
Pemblokiran panggilan Windows Sockets 1.1 sedang berlangsung, atau penyedia layanan masih memproses fungsi panggilan balik. | |
Deskriptor bukan soket. |
Kode kesalahan tambahan dapat diatur saat jendela aplikasi menerima pesan. Kode kesalahan ini diekstrak dari lParam dalam pesan balasan menggunakan makro WSAGETSELECTERROR . Kemungkinan kode kesalahan untuk setiap peristiwa jaringan tercantum dalam tabel berikut.
Peristiwa: FD_CONNECT
Kode kesalahan | Makna |
---|---|
WSAEAFNOSUPPORT | Alamat dalam keluarga yang ditentukan tidak dapat digunakan dengan soket ini. |
WSAECONNREFUSED | Upaya untuk menyambungkan ditolak. |
WSAENETUNREACH | Jaringan tidak dapat dijangkau dari host ini saat ini. |
WSAEFAULT | Parameter namelen tidak valid. |
WSAEINVAL | Soket sudah terikat ke alamat. |
WSAEISCONN | Soket sudah tersambung. |
WSAEMFILE | Tidak ada lagi deskriptor file yang tersedia. |
WSAENOBUFS | Tidak ada ruang buffer yang tersedia. Soket tidak dapat dihubungkan. |
WSAENOTCONN | Soket tidak tersambung. |
WSAETIMEDOUT | Coba sambungkan kehabisan waktu tanpa membuat koneksi. |
Peristiwa: FD_CLOSE
Kode kesalahan | Makna |
---|---|
WSAENETDOWN | Subsistem jaringan gagal. |
WSAECONNRESET | Koneksi direset di sisi jarak jauh. |
WSAECONNABORTED | Koneksi dihentikan karena waktu habis atau kegagalan lainnya. |
Kode kesalahan | Makna |
---|---|
WSAENETDOWN | Subsistem jaringan gagal. |
Peristiwa: FD_ROUTING_INTERFACE_CHANGE
Kode kesalahan | Makna |
---|---|
WSAENETUNREACH | Tujuan yang ditentukan tidak lagi dapat dijangkau. |
WSAENETDOWN | Subsistem jaringan gagal. |
Keterangan
Fungsi WSAAsyncSelect digunakan untuk meminta bahwa WS2_32.DLL harus mengirim pesan ke jendela hWnd ketika mendeteksi peristiwa jaringan apa pun yang ditentukan oleh parameter lEvent . Pesan yang harus dikirim ditentukan oleh parameter wMsg . Soket yang pemberitahuannya diperlukan diidentifikasi oleh parameter s .
Fungsi WSAAsyncSelect secara otomatis mengatur soket ke mode nonblocking, terlepas dari nilai lEvent. Untuk mengatur soket kembali ke mode pemblokiran, pertama-tama perlu untuk menghapus catatan peristiwa yang terkait dengan soket melalui panggilan ke WSAAsyncSelect dengan lEvent diatur ke nol. Anda kemudian dapat memanggil ioctlsocket atau WSAIoctl untuk mengatur soket kembali ke mode pemblokiran. Untuk informasi selengkapnya tentang cara mengatur soket nonblok kembali ke mode pemblokiran, lihat fungsi ioctlsocket dan WSAIoctl .
Parameter lEvent dibangun dengan menggunakan operator OR bitwise dengan nilai apa pun yang tercantum dalam tabel berikut.
Nilai | Makna |
---|---|
FD_READ | Atur untuk menerima pemberitahuan kesiapan untuk membaca. |
FD_WRITE | Ingin menerima pemberitahuan kesiapan untuk menulis. |
FD_OOB | Ingin menerima pemberitahuan kedatangan data OOB. |
FD_ACCEPT | Ingin menerima pemberitahuan koneksi masuk. |
FD_CONNECT | Ingin menerima pemberitahuan koneksi yang selesai atau operasi gabungan multi-titik. |
FD_CLOSE | Ingin menerima pemberitahuan penutupan soket. |
FD_QOS | Ingin menerima pemberitahuan perubahan Kualitas Layanan (QoS) soket. |
FD_GROUP_QOS | Ingin menerima pemberitahuan perubahan Kualitas Layanan (QoS) grup soket (dicadangkan untuk digunakan di masa mendatang dengan grup soket). Dicadangkan. |
FD_ROUTING_INTERFACE_CHANGE | Ingin menerima pemberitahuan perubahan antarmuka perutean untuk tujuan yang ditentukan. |
FD_ADDRESS_LIST_CHANGE | Ingin menerima pemberitahuan perubahan daftar alamat lokal untuk keluarga protokol soket. |
Mengeluarkan WSAAsyncSelect untuk soket membatalkan WSAAsyncSelect atau WSAEventSelect sebelumnya untuk soket yang sama. Misalnya, untuk menerima pemberitahuan untuk membaca dan menulis, aplikasi harus memanggil WSAAsyncSelect dengan FD_READ dan FD_WRITE, sebagai berikut:
rc = WSAAsyncSelect(s, hWnd, wMsg, FD_READ|FD_WRITE);
Tidak dimungkinkan untuk menentukan pesan yang berbeda untuk peristiwa yang berbeda. Kode berikut tidak akan berfungsi; panggilan kedua akan membatalkan efek yang pertama, dan hanya peristiwa FD_WRITE yang akan dilaporkan dengan pesan wMsg2:
rc = WSAAsyncSelect(s, hWnd, wMsg1, FD_READ);
rc = WSAAsyncSelect(s, hWnd, wMsg2, FD_WRITE);
Untuk membatalkan semua pemberitahuan yang menunjukkan bahwa Windows Sockets tidak boleh mengirim pesan lebih lanjut yang terkait dengan peristiwa jaringan pada soket, lEvent diatur ke nol.
rc = WSAAsyncSelect(s, hWnd, 0, 0);
Meskipun WSAAsyncSelect segera menonaktifkan posting pesan peristiwa untuk soket dalam instans ini, ada kemungkinan bahwa pesan dapat menunggu dalam antrean pesan aplikasi. Oleh karena itu, aplikasi harus siap menerima pesan peristiwa jaringan bahkan setelah pembatalan. Menutup soket dengan closesocket juga membatalkan pengiriman pesan WSAAsyncSelect , tetapi peringatan yang sama tentang pesan dalam antrean masih berlaku.
Soket yang dibuat oleh fungsi accept memiliki properti yang sama dengan soket mendengarkan yang digunakan untuk menerimanya. Akibatnya, peristiwa WSAAsyncSelect yang ditetapkan untuk soket mendengarkan juga berlaku untuk soket yang diterima. Misalnya, jika soket mendengarkan memiliki peristiwa WSAAsyncSelectFD_ACCEPT, FD_READ, dan FD_WRITE, soket apa pun yang diterima pada soket mendengarkan tersebut juga akan memiliki peristiwa FD_ACCEPT, FD_READ, dan FD_WRITE dengan nilai wMsg yang sama yang digunakan untuk pesan. Jika wMsg atau peristiwa yang berbeda diinginkan, aplikasi harus memanggil WSAAsyncSelect, melewati soket yang diterima dan data baru yang diinginkan.
Ketika salah satu peristiwa jaringan yang dicalonkan terjadi pada soket yang ditentukan, jendela aplikasi hWnd menerima pesan wMsg. Parameter wParam mengidentifikasi soket tempat peristiwa jaringan terjadi. Kata rendah dari lParam menentukan peristiwa jaringan yang telah terjadi. Kata tinggi dari lParam berisi kode kesalahan apa pun. Kode kesalahan adalah kesalahan apa pun seperti yang didefinisikan dalam Winsock2.h.
#include <windows.h>
#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
Penggunaan makro ini akan memaksimalkan portabilitas kode sumber untuk aplikasi.
Kemungkinan kode peristiwa jaringan yang dapat dikembalikan tercantum dalam tabel berikut.
Nilai | Makna |
---|---|
FD_READ | Soket siap untuk dibaca. |
FD_WRITE | Soket siap untuk menulis. |
FD_OOB | Data OOB siap dibaca di soket |
FD_ACCEPT | Soket siap untuk menerima koneksi masuk baru. |
FD_CONNECT | Operasi gabungan koneksi atau multipoint dimulai pada soket selesai . |
FD_CLOSE | Koneksi yang diidentifikasi oleh soket s telah ditutup. |
FD_QOS | Kualitas Layanan yang terkait dengan soket telah berubah. |
FD_GROUP_QOS | Dicadangkan. Kualitas Layanan yang terkait dengan grup soket tempat s berada telah berubah (dicadangkan untuk digunakan di masa mendatang dengan grup soket). |
FD_ROUTING_INTERFACE_CHANGE | Antarmuka lokal yang harus digunakan untuk mengirim ke tujuan yang ditentukan telah berubah. |
FD_ADDRESS_LIST_CHANGE | Daftar alamat keluarga protokol soket tempat klien aplikasi dapat mengikat telah berubah. |
Meskipun WSAAsyncSelect dapat dipanggil dengan minat pada beberapa peristiwa, jendela aplikasi akan menerima satu pesan untuk setiap peristiwa jaringan.
Seperti dalam kasus fungsi pilih , WSAAsyncSelect akan sering digunakan untuk menentukan kapan operasi transfer data (kirim atau rekv) dapat dikeluarkan dengan harapan keberhasilan segera. Namun demikian, aplikasi yang kuat harus siap untuk kemungkinan bahwa ia dapat menerima pesan dan mengeluarkan panggilan Windows Sockets 2 yang segera mengembalikan WSAEWOULDBLOCK . Misalnya, urutan peristiwa berikut dimungkinkan:
- Data tiba di soket; Windows Sockets 2 memposting pesan WSAAsyncSelect
- Aplikasi memproses beberapa pesan lain
- Saat memproses, aplikasi mengeluarkan
ioctlsocket(s, FIONREAD...)
dan memperhatikan bahwa ada data yang siap dibaca - Aplikasi mengeluarkan
recv(s,...)
untuk membaca data - Perulangan aplikasi untuk memproses pesan berikutnya, akhirnya mencapai pesan WSAAsyncSelect yang menunjukkan bahwa data siap dibaca
- Masalah aplikasi
recv(s,...)
, yang gagal dengan kesalahan WSAEWOULDBLOCK.
WS2_32.DLL tidak akan terus membanjiri aplikasi dengan pesan untuk peristiwa jaringan tertentu. Setelah berhasil memposting pemberitahuan peristiwa tertentu ke jendela aplikasi, tidak ada pesan lebih lanjut untuk peristiwa jaringan tersebut yang akan diposting ke jendela aplikasi sampai aplikasi melakukan panggilan fungsi yang secara implisit mengaktifkan kembali pemberitahuan tentang peristiwa jaringan tersebut.
Kejadian | Mengaktifkan kembali fungsi |
---|---|
FD_READ | recv, recvfrom, WSARecv, atau WSARecvFrom. |
FD_WRITE | kirim, kirim ke, WSASend, atau WSASendTo. |
FD_OOB | recv, recvfrom, WSARecv, atau WSARecvFrom. |
FD_ACCEPT | terima atau WSAAccept kecuali kode kesalahan WSATRY_AGAIN menunjukkan bahwa fungsi kondisi dikembalikan CF_DEFER. |
FD_CONNECT | Tidak ada. |
FD_CLOSE | Tidak ada. |
FD_QOS | WSAIoctl dengan perintah SIO_GET_QOS. |
FD_GROUP_QOS | Dicadangkan. WSAIoctl dengan perintah SIO_GET_GROUP_QOS (disediakan untuk digunakan di masa mendatang dengan grup soket). |
FD_ROUTING_INTERFACE_CHANGE | WSAIoctl dengan perintah SIO_ROUTING_INTERFACE_CHANGE. |
FD_ADDRESS_LIST_CHANGE | WSAIoctl dengan perintah SIO_ADDRESS_LIST_CHANGE. |
Setiap panggilan ke mengaktifkan kembali rutinitas, bahkan panggilan yang gagal, menghasilkan pengaktifan kembali posting pesan untuk peristiwa yang relevan.
Untuk peristiwa FD_READ, FD_OOB, dan FD_ACCEPT , posting pesan dipicu tingkat. Ini berarti bahwa jika rutinitas pengaktifan kembali dipanggil dan kondisi yang relevan masih terpenuhi setelah panggilan, pesan WSAAsyncSelect diposting ke aplikasi. Ini memungkinkan aplikasi untuk digerakkan oleh peristiwa dan tidak peduli dengan jumlah data yang tiba pada satu waktu. Pertimbangkan urutan berikut ini:
- Tumpukan transportasi jaringan menerima 100 byte data pada soket dan menyebabkan Windows Sockets 2 memposting pesan FD_READ .
- Aplikasi mengeluarkan recv( s, buffptr, 50, 0) untuk membaca 50 byte.
- Pesan FD_READ lain diposting karena masih ada data yang akan dibaca.
Peristiwa FD_QOS dan FD_GROUP_QOS dianggap terpicu tepi. Pesan akan diposting tepat sekali ketika kualitas perubahan layanan terjadi. Pesan lebih lanjut tidak akan datang sampai penyedia mendeteksi perubahan lebih lanjut dalam kualitas layanan atau aplikasi menegosiasikan ulang kualitas layanan untuk soket.
Pesan FD_ROUTING_INTERFACE_CHANGE diposting ketika antarmuka lokal yang harus digunakan untuk mencapai tujuan yang ditentukan di WSAIoctl dengan perubahan SIO_ROUTING_INTERFACE_CHANGE setelah IOCTL tersebut diterbitkan.
Pesan FD_ADDRESS_LIST_CHANGE diposting ketika daftar alamat tempat aplikasi dapat mengikat perubahan setelah WSAIoctl dengan SIO_ADDRESS_LIST_CHANGE diterbitkan.
Jika ada peristiwa yang terjadi ketika aplikasi memanggil WSAAsyncSelect atau ketika fungsi mengaktifkan kembali dipanggil, maka pesan diposting sebagaimana mewajibkan. Misalnya, pertimbangkan urutan berikut:
- Aplikasi memanggil mendengarkan.
- Permintaan koneksi diterima, tetapi belum diterima.
- Aplikasi memanggil WSAAsyncSelect yang menentukan bahwa aplikasi memerlukan penerimaan pesan FD_ACCEPT untuk soket. Karena kegigihan peristiwa, Windows Sockets 2 segera memposting pesan FD_ACCEPT .
Peristiwa FD_WRITE ditangani sedikit berbeda. Pesan FD_WRITE diposting ketika soket pertama kali terhubung dengan koneksi atau WSAConnect (setelah FD_CONNECT, jika juga terdaftar) atau diterima dengan terima atau WSAAccept, dan kemudian setelah operasi pengiriman gagal dengan WSAEWOULDBLOCK dan ruang buffer tersedia. Oleh karena itu, aplikasi dapat mengasumsikan bahwa pengiriman dimungkinkan mulai dari pesan FD_WRITE pertama dan berlangsung hingga pengiriman mengembalikan WSAEWOULDBLOCK. Setelah kegagalan seperti itu, aplikasi akan diberi tahu bahwa pengiriman kembali dimungkinkan dengan pesan FD_WRITE .
Peristiwa FD_OOB hanya digunakan saat soket dikonfigurasi untuk menerima data OOB secara terpisah. Jika soket dikonfigurasi untuk menerima data OOB sebaris, data OOB (dipercepat) diperlakukan sebagai data normal dan aplikasi harus mendaftarkan minat, dan akan menerima, FD_READ peristiwa, bukan peristiwa FD_OOB . Aplikasi dapat mengatur atau memeriksa cara data OOB ditangani dengan menggunakan setsockopt atau getsockopt untuk opsi SO_OOBINLINE.
Kode kesalahan dalam pesan FD_CLOSE menunjukkan apakah penutupan soket anggun atau abortif. Jika kode kesalahan adalah nol, maka penutupannya anggun; jika kode kesalahan adalah WSAECONNRESET, maka sirkuit virtual soket diatur ulang. Ini hanya berlaku untuk soket berorientasi koneksi seperti SOCK_STREAM.
Pesan FD_CLOSE diposting ketika indikasi dekat diterima untuk sirkuit virtual yang sesuai dengan soket. Dalam istilah TCP, ini berarti bahwa FD_CLOSE diposting ketika koneksi masuk ke status TIME WAIT atau CLOSE WAIT. Ini hasil dari akhir jarak jauh yang melakukan pematian pada sisi kirim atau closesocket. FD_CLOSE hanya boleh diposting setelah semua data dibaca dari soket, tetapi aplikasi harus memeriksa data yang tersisa setelah menerima FD_CLOSE untuk menghindari kemungkinan kehilangan data.
Ketahuilah bahwa aplikasi hanya akan menerima pesan FD_CLOSE untuk menunjukkan penutupan sirkuit virtual, dan hanya ketika semua data yang diterima telah dibaca jika ini dekat dengan baik. Ini tidak akan menerima pesan FD_READ untuk menunjukkan kondisi ini.
Pesan FD_QOS atau FD_GROUP_QOS diposting ketika parameter apa pun dalam spesifikasi alur yang terkait dengan soket atau grup soket miliknya masing-masing telah berubah. Aplikasi harus menggunakan WSAIoctl dengan perintah SIO_GET_QOS atau SIO_GET_GROUP_QOS untuk mendapatkan kualitas layanan saat ini untuk soket atauuntuk grup soket milik masing-masing.
Peristiwa FD_ROUTING_INTERFACE_CHANGE dan FD_ADDRESS_LIST_CHANGE juga dianggap sebagai tepi yang dipicu. Pesan akan diposting tepat sekali ketika perubahan terjadi setelah aplikasi meminta pemberitahuan dengan mengeluarkan WSAIoctl dengan SIO_ROUTING_INTERFACE_CHANGE atau SIO_ADDRESS_LIST_CHANGE yang sesuai. Pesan lebih lanjut tidak akan datang sampai aplikasi menerbitkan kembali IOCTL dan perubahan lain terdeteksi karena IOCTL telah dikeluarkan.
Berikut adalah ringkasan peristiwa dan kondisi untuk setiap pesan pemberitahuan asinkron.
-
FD_READ:
- Ketika WSAAsyncSelect dipanggil, jika saat ini ada data yang tersedia untuk diterima.
- Ketika data tiba, jika FD_READ belum diposting.
- Setelah recv atau recvfrom dipanggil, dengan atau tanpa MSG_PEEK), jika data masih tersedia untuk diterima.
Catatan Saat setsockopt SO_OOBINLINE diaktifkan, data menyertakan data normal dan data OOB dalam instans yang disebutkan di atas.
-
FD_WRITE:
- Ketika WSAAsyncSelect dipanggil, jika kirim atau kirim ke dimungkinkan.
- Setelah menyambungkan atau menerima panggilan, saat koneksi dibuat.
- Setelah kirim atau kirim gagal dengan WSAEWOULDBLOCK, ketika kirim atau kirim ke kemungkinan akan berhasil.
- Setelah mengikat pada soket tanpa koneksi. FD_WRITE mungkin atau mungkin tidak terjadi saat ini (tergantung implementasi). Bagaimanapun, soket tanpa koneksi selalu dapat ditulis segera setelah operasi pengikatan .
-
FD_OOB: Hanya valid saat setsockopt SO_OOBINLINE dinonaktifkan (default).
- Ketika WSAAsyncSelect dipanggil, jika ada data OOB yang saat ini tersedia untuk diterima dengan bendera MSG_OOB.
- Ketika data OOB tiba, jika FD_OOB belum diposting.
- Setelah recv atau recvfrom dipanggil dengan atau tanpa bendera MSG_OOB, jika data OOB masih tersedia untuk diterima.
-
FD_ACCEPT:
- Ketika WSAAsyncSelect dipanggil, jika saat ini ada permintaan koneksi yang tersedia untuk diterima.
- Saat permintaan koneksi tiba, jika FD_ACCEPT belum diposting.
- Setelah diterima dipanggil, jika ada permintaan koneksi lain yang tersedia untuk diterima.
-
FD_CONNECT:
- Ketika WSAAsyncSelect dipanggil, jika saat ini ada koneksi yang dibuat.
- Setelah koneksi dipanggil, ketika koneksi dibuat, bahkan ketika koneksi segera berhasil, seperti biasa dengan soket datagram.
- Setelah memanggil WSAJoinLeaf, ketika operasi gabungan selesai.
- Setelah menyambungkan, WSAConnect, atau WSAJoinLeaf dipanggil dengan soket yang tidak memblokir dan berorientasi koneksi. Operasi awal dikembalikan dengan kesalahan tertentu dari WSAEWOULDBLOCK, tetapi operasi jaringan melanjutkan. Apakah operasi akhirnya berhasil atau tidak, ketika hasilnya telah ditentukan, FD_CONNECT terjadi. Klien harus memeriksa kode kesalahan untuk menentukan apakah hasilnya berhasil atau gagal.
-
FD_CLOSE: Hanya valid pada soket berorientasi koneksi (misalnya, SOCK_STREAM)
- Ketika WSAAsyncSelect dipanggil, jika koneksi soket telah ditutup.
- Setelah sistem jarak jauh dimulai dengan baik menutup, ketika saat ini tidak ada data yang tersedia untuk diterima (Ketahuilah bahwa, jika data telah diterima dan menunggu untuk dibaca ketika sistem jarak jauh memulai penutupan dengan baik, FD_CLOSE tidak dikirimkan sampai semua data yang tertunda telah dibaca).
- Setelah sistem lokal dimulai dengan penutupan yang baik dan sistem jarak jauh telah merespons dengan pemberitahuan "Akhir Data" (misalnya, TCP FIN), ketika tidak ada data yang saat ini tersedia untuk diterima.
- Ketika sistem jarak jauh menghentikan koneksi (misalnya, TCP RST yang dikirim), dan lParam akan berisi nilai kesalahan WSAECONNRESET .
CatatanFD_CLOSE tidak diposting setelah closesocket dipanggil.
-
FD_QOS:
- Ketika WSAAsyncSelect dipanggil, jika kualitas layanan yang terkait dengan soket telah diubah.
- Setelah WSAIoctl dengan SIO_GET_QOS dipanggil, ketika kualitas layanan diubah.
- FD_GROUP_QOS: Dicadangkan.
-
FD_ROUTING_INTERFACE_CHANGE:
- Setelah WSAIoctl dengan SIO_ROUTING_INTERFACE_CHANGE dipanggil, ketika antarmuka lokal yang harus digunakan untuk mencapai tujuan yang ditentukan dalam perubahan IOCTL.
-
FD_ADDRESS_LIST_CHANGE:
- Setelah WSAIoctl dengan SIO_ADDRESS_LIST_CHANGE dipanggil, ketika daftar alamat lokal tempat aplikasi dapat mengikat perubahan.
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 | winsock.h (termasuk Winsock2.h) |
Pustaka | Ws2_32.lib |
DLL | Ws2_32.dll |