Adres Biçimleri
Önceki Soket Adresleri Sonraki
Adres Biçimleri
bind ve getsockname işlevleri soket adresine gösterici olarak genel bir veri türü olan struct sockaddr * türünü kullanırlar. Bu veri türünün bir adresi yorumlamak veya oluşturmak için kullanılması verimli değildir; bunun için soketin isim alanı ile uyumlu bir veri türünün kullanılması gerekir.
Bu nedenle genel kullanımda, uygun isim alanına özgü bir adres oluşturulur, ardından da bind veya getsockname çağrılarak struct sockaddr * türünde bir göstericiye dönüştürülür.
struct sockaddr veri türünden alabileceğiniz bir bilgi parçası da adres biçim tasarımcısıdır. Bu, adresin tamamını anlamak için hangi veri türünü kullanacağınızı belirtir.
Bu bölümdeki semboller sys/socket.h başlık dosyasında tanımlanmıştır.
struct sockaddr
veri türü
struct sockaddr türü aşağıdaki üyelere sahiptir:
short int sa_family
Bu, adresin adres biçim kodudur. Takip eden verinin biçimini tanımlar.
char sa_data[14]
Biçime bağımlı olan asıl soket adresi verisidir. Uzunluğu da biçime bağlıdır ve 14 den de büyük olabilir. sa_data'nın 14 olan uzunluğu temelde isteğe bağlıdır.
Her adres biçimi AF_ ile başlayan bir sembolik isme sahiptir. Her biri ilgili isim alanını tasarlayan bir PF_sembolü ile eşleşir. Aşağıda adres biçim isimlerinin listesi görülmektedir:
AF_LOCAL
Bu, yerel isim alanıyla giden adres biçimini tasarlar (PF_LOCAL isim alanının adıdır). Bu adres biçimi hakkında Yerel İsim Alanı ile İlgili Ayrıntılar bölümünde daha ayrıntılı bilgi bulabilirsiniz.
AF_UNIX
Bu AF_LOCAL ile eşanlamlıdır. Gerçi AF_LOCAL POSIX.1g tarafından önerilmişse de, AF_UNIX sistemler arasında daha taşınabilirdir. AF_UNIX, BSD kaynaklı geleneksel ismidir, hatta birçok POSIX sistemleri de onu desteklemektedir. Bu aynı zamanda Unix98 belirtimi için de seçilen isimdir. (Aynı şey PF_UNIX ve dolayısıyla PF_LOCAL için de geçerlidir.)
AF_FILE
Bu da uyumluluk için konulmuştur ve AF_LOCAL ile aynıdır (Keza PF_FILE da PF_LOCAL ile aynıdır).
AF_INET
Bu İnternet isim alanıyla giden adres biçimini tasarlar (PF_INET isim alanının adıdır). Bkz. İnternet Soket Adreslerinin Biçimleri.
AF_INET6
Bu, AF_INET ile benzerdir, fakat IPv6 protokolüyle ilgilidir (PF_INET6 IPv6'ya ilişkin isim alanının adıdır).
AF_UNSPEC
Bu belirli bir adres biçimi tasarlamaz. Kullanımı çok nadirdir, örneğin "bağlı" bir datagram soketinin varsayılan hedef adresini silmek için kullanılır. Bkz. Datagramların Gönderilmesi.
İlişkin isim alanı tasarlayıcı sembolü PF_UNSPEC tamamlayıcı olarak bulunmaktadır, fakat bir yazılım içinde kullanmanın bir anlamı yoktur.
sys/socket.h birçok farklı ağ türü için AF_ ile başlayan sembolleri tanımlar, birçoğu veya tamamı aslında gerçekleştirilmemiştir. Bunlar düzgün çalışmaya başladığı zaman ve nasıl kullanıldığı hakkında bilgi edindiğimizde bunları da belgelendireceğiz.
Önceki Üst Ana Başlık Sonraki
Soket Adresleri Başlangıç Adreslerin Atanması
Bir Linux Kitaplığı Sayfası