Datagramların Alınması
Önceki Datagram Soket İşlemleri Sonraki
Datagramların Alınması
recvfrom işlevi datagram soketinden bir paket okur ve ek olarak nereden gönderilmiş olduğunu söyler. Bu işlev sys/socket.h içinde tanımlıdır.
int recvfrom
(int              soket,
 void            *tampon,
 size_t           boyut,
 int              bayraklar,
 struct sockaddr *adres,
 socklen_t       *uzunluk_gstr)
işlev
recvfrom işlevi soket soketinden bir paketi tampon alanına okur. boyut argümanı okunacak azami bayt sayısını belirtir.
Eğer paket boyut bayttan uzunsa, paketin ilk boyut baytı alınır ve paketin geri kalanı kaybolur. Paketin gerisini okumanın hiç bir yolu yoktur. Bu nedenle, bir paket protokolü kullandığınızda, paketin ne uzunlukta olacağını her zaman bilmeniz gerekir.
adres ve uzunluk_gstr argümanları paketin geldiği yerin adresini döndürmek için kullanılır. Bkz. Soket Adresleri. Yerel etki alanındaki bir soket için adres bilgisi anlamlı değildir, çünkü böyle bir soketin adresini okuyamazsınız (Bkz. Yerel İsim Alanı). Bu bilgiyle ilgilenmiyorsanız adres argümanına boş gösterici belirtebilirsiniz.
bayraklar argümanı recv işlevindeki gibi yorumlanır (bkz. Soket Verisi Seçenekleri). Dönüş değeri ve hata durumları da recv işlevi ile aynıdır.
Bu işlev çok evreli yazılımlar için iptal noktası olarak tanımlanmıştır, bu nedenle ayrılan özkaynakların (bellek, dosya tanımlayıcısı, semafor veya her hangi başka bir kaynak) evre iptal edilse dahi serbest bırakılmasının sağlanması şarttır.
Paketi kimin gönderdiğini bulmak istemiyorsanız recvfrom yerine sadece recv işlevini de (bkz. Veri Alımı) kullanabilirsiniz (çünkü paketin nereden gelmesi gerektiğini biliyor olabilirsiniz). Hatta bayraklar argümanını belirtmek istemezseniz read işlevi bile kullanılabilir (bkz. Girdi ve Çıktı İlkelleri).
Önceki Üst Ana Başlık Sonraki
Datagramların Gönderilmesi Başlangıç Datagram Soket Örneği
Bir Linux Kitaplığı Sayfası