Apa itu soket non-blocking?
Apa itu soket non-blocking?

Video: Apa itu soket non-blocking?

Video: Apa itu soket non-blocking?
Video: Socket Programming Part - 4 (Blocking vs non blocking sockets) in C/C++ 2024, November
Anonim

non - memblokir soket . Solusi untuk masalah ini disebut " non - memblokir soket ". Secara default, TCP soket berada dalam " pemblokiran " mode. Misalnya, saat Anda memanggil recv() untuk membaca dari aliran, kontrol tidak dikembalikan ke program Anda hingga setidaknya satu byte data dibaca dari situs jarak jauh.

Dengan demikian, apa itu soket pemblokiran dan non pemblokiran?

Di dalam pemblokiran mode, recv, send, connect (TCP only) dan accept (TCP only) stopkontak Panggilan API akan memblokir tanpa batas waktu sampai tindakan yang diminta telah dilakukan. Di dalam non - pemblokiran mode, fungsi-fungsi ini segera kembali. pilih kemauan memblokir sampai stopkontak siap.

Orang mungkin juga bertanya, apakah soket memblokir secara default? Oleh bawaan , TCP soket ditempatkan di pemblokiran mode. Ini berarti bahwa kontrol tidak dikembalikan ke program Anda sampai beberapa operasi tertentu selesai.

Mengenai hal ini, bagaimana Anda membuat soket non-blocking?

Untuk menandai stopkontak sebagai non - pemblokiran , kami menggunakan panggilan sistem fcntl. Berikut ini contohnya: int flags = guard(fcntl(socket_fd, F_GETFL), "tidak bisa mendapatkan file flag"); guard(fcntl(socket_fd, F_SETFL, flags | O_NONBLOCK), "tidak bisa mengatur bendera berkas");

Apa itu pemblokiran soket?

A stopkontak bisa di" mode pemblokiran " atau "tanpa pemblokiran mode ." Fungsi dari soket di dalam pemblokiran (atau sinkron) mode tidak kembali sampai mereka dapat menyelesaikan tindakan mereka. Ini disebut pemblokiran karena stopkontak yang fungsinya dipanggil tidak dapat melakukan apa pun - diblokir - hingga panggilan kembali.

Direkomendasikan: