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, accept
sunucunun 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ığı recv
aynı 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 recv
doğru sokete yönlendiriliyor, ancak emin değilim.
Bu mekanizmanın iç işleyişinin kapsamlı bir açıklamasını almak harika olurdu.