Protokol Veritabanı
Önceki İnternet İsim Alanı Sonraki
Protokol Veritabanı
Soketlerle kullanılan iletişim protokolleri verinin nasıl değiş/tokuş edildiği konusundaki alt seviye ayrıntılarla ilgilidir. Örneğin, protokol veri aktarımındaki ve ileti yönlendirme komutlarındaki hataları bulmak için sağlama toplamı (checksum) uygular. Normal kullanıcı yazılımlarının bu ayrıntılarla ilgilenmeleri gerekmez.
İnternet isim alanındaki öntanımlı iletişim protokolü iletişim tarzına bağlıdır. Akım (stream) iletişimi için öntanımlı iletişim tarzı TCP'dir (Transmission Control Protocol - Denetimli Aktarım Protokolü). Datagram iletişimi için öntanımlı iletişim tarzı UDP'dir (User Datagram Protocol - Kullanıcı Datagram Protokolü). Güvenilir datagram iletişimi için için öntanımlı iletişim tarzı RDP'dir (Reliable Datagram Protocol - Güvenilir Datagram Protokolü). Sizin hemen hemen her zaman öntanımlı iletişim tarzını kullanmanız gerekir.
İnternet protokolleri genelde numara yerine isimle belirtilirler. Bir konak tarafından bilinen ağ protokolleri bir veritabanında saklanmaktadır. Bu genellikle ya /etc/protocols dosyasından veya bir isim sunucusunun sunduğu eşdeğerinden elde edilir. Protokol numarası ile ilişkili bir protokol ismini veritabanında aramak için getprotobyname işlevini kullanabilirsiniz.
Burada protokol veritabanına erişim için gerekli araçların ayrıntılı açıklamasını bulabilirsiniz. Bunlarnetdb.h başlık dosyası içerisinde tanımlıdır.
struct protoent
veri türü
Bu veri türü ağ protokolleri veritabanındaki girdileri göstermek için kullanılır. Aşağıdaki üyelere sahiptir:
char *p_name
Bu protokolün resmi adıdır.
char **p_aliases
Bunlar protokolün diğer adlarıdır, bir dizgeler dizisi olarak belirtilmişlerdir. Dizinin son elemanı bir boş göstericidir.
int p_proto
Bu protokol numarasıdır (konak bayt sırasında); bu üyeyi socket işlevinin protokol argümanında kullanın.
Belirli bir protokolü protokol veritabanında aramak için getprotobyname ve getprotobynumber işlevlerini kullanabilirsiniz. Bilgi durağan olarak ayrılmış bir yapı içinde döner; eğer çağrılar arasında bilgiyi kullanmak isterseniz kopyalamalısınız.
struct protoent *getprotobyname
(const char *isim)
işlev
getprotobyname işlevi isim isimli ağ protokolü hakkında bilgi döndürür. Eğer böyle bir protokol yoksa, boş gösterici döndürür.
struct protoent *getprotobynumber
(int protocol)
işlev
getprotobynumber işlevi protocol numaralı ağ protokolü hakkında bilgi döndürür. Eğer böyle bir protokol yoksa, boş gösterici döndürür.
setprotoent, getprotoent ve endprotoent işlevlerini kullanarak bütün protokol veritabanını bir protokol için tarayabilirsiniz. Bu işlevler evresel (reentrant) işlevler olmadığı için kullanırken dikkatli olunuz.
void setprotoent
(int açıkkal)
işlev
Bu işlev protokol veritabanını taramaya başlamak için açar.
Eğer açıkkal argümanı sıfır değise, bu bir bayrağı kaldırarak getprotobyname veya getprotobynumber işlevlerine yapılan çağrılarda veritabanının kapanmamasını sağlar (normalde olması gerektiği gibi). Bu yaklaşım işlevlerin sık çağırılması durumunda veritabanının her çağrıda tekrardan açılmasından kurtararak verimi artırır.
struct protoent *getprotoent
(void)
işlev
Bu işlev protokol veritabanında sıradaki girdiyi döndürür. Başka girdi yoksa boş gösterici döndürür.
void endprotoent
(void)
işlev
Bu işlev protokol veritabanını kapatır.
Önceki Üst Ana Başlık Sonraki
Bayt Sırası Dönüşümü Başlangıç İnternet Soketi Örneği
Bir Linux Kitaplığı Sayfası