API soket adalah standar de-facto untuk komunikasi TCP / IP dan UDP / IP (yaitu, kode jaringan seperti yang kita kenal). Namun, salah satu fungsi intinya, accept()
agak ajaib.
Meminjam definisi semi formal:
accept () digunakan di sisi server. Ia menerima upaya masuk yang diterima untuk membuat sambungan TCP baru dari klien jarak jauh, dan membuat soket baru yang terkait dengan pasangan alamat soket sambungan ini.
Dengan kata lain, accept
mengembalikan soket baru di mana server dapat berkomunikasi dengan klien yang baru terhubung. Soket lama (yang accept
disebut) tetap terbuka, di port yang sama, mendengarkan koneksi baru.
Bagaimana accept
kerjanya? Bagaimana penerapannya? Ada banyak kebingungan tentang topik ini. Banyak orang mengklaim menerima membuka port baru dan Anda berkomunikasi dengan klien melalui itu. Tetapi ini jelas tidak benar, karena tidak ada port baru yang dibuka. Anda sebenarnya dapat berkomunikasi melalui port yang sama dengan klien yang berbeda, tetapi bagaimana caranya? Ketika beberapa utas memanggil recv
pada port yang sama, bagaimana data tahu ke mana harus pergi?
Saya kira itu adalah sesuatu di sepanjang baris alamat klien yang dikaitkan dengan deskriptor soket, dan setiap kali data masuk, recv
itu dialihkan ke soket yang benar, tetapi saya tidak yakin.
Akan sangat bagus untuk mendapatkan penjelasan menyeluruh tentang cara kerja mekanisme ini.