Soket API, TCP / IP ve UDP / IP iletişimleri için fiili standarttır (yani, bildiğimiz ağ kodudur). Bununla birlikte, temel işlevlerinden biri accept()biraz büyülü.
Yarı resmi bir tanımı ödünç almak için:
kabul () sunucu tarafında kullanılır. Uzak istemciden gelen yeni bir TCP bağlantısı oluşturma girişimini kabul eder ve bu bağlantının soket adres çiftiyle ilişkilendirilmiş yeni bir soket oluşturur.
Başka bir deyişle, acceptsunucunun yeni bağlanan istemciyle iletişim kurabileceği yeni bir soket döndürür. Eski soket ( acceptçağrılan) aynı bağlantı noktasında yeni bağlantıları dinleyerek açık kalır.
Nasıl acceptçalışır? Nasıl uygulanıyor? Bu konuda çok fazla kafa karışıklığı var. Birçok kişi kabul ettiğini iddia ediyor yeni bir bağlantı noktası açıyor ve bu bağlantı üzerinden müşteri ile iletişim kuruyorsunuz. Ancak yeni bağlantı noktası açılmadığı için bu kesinlikle doğru değil. Aslında aynı bağlantı noktası üzerinden farklı istemcilerle iletişim kurabilirsiniz, ancak nasıl? Birkaç iş parçacığı recvaynı bağlantı noktasını aradığında , veriler nereye gideceklerini nasıl biliyor?
Sanırım bu, istemcinin adresinin satırları boyunca bir soket tanımlayıcısıyla ilişkilendirilmiş bir şey ve her veri aracılığıyla recvdoğru sokete yönlendiriliyor, ancak emin değilim.
Bu mekanizmanın iç işleyişinin kapsamlı bir açıklamasını almak harika olurdu.