Provided by: manpages-tr_2.0.6-2_all bug

İSİM

       socket - iletişim için uç nokta oluşturur

BİLDİRİM

       #include <sys/types.h>       /* Bkz: EK BİLGİLER */
       #include <sys/socket.h>

       int socket (int domain, int type, int protocol);

AÇIKLAMA

       socket()  iletişim  için  uç nokta oluşturur ve bu ucu ifade eden bir dosya tanıtıcısı döndürür. Başarılı
       bir çağrı ile dönen dosya tanıtıcısı, süreç için açık olmayan en küçük numaralı dosya tanıtıcısı olur.

       domain değişkeninde belirtilen adres ailesi iletişim alanını, adres ve  protokol  ailesini  belirler.  Bu
       aileler  <sys/socket.h> içerisinde tanımlanmıştır. Adres ailesi sabitlerinin isimleri AF, protokol ailesi
       sabitlerinin isimleri ise PF ile başlar ve bunlar eşdeğerdir. Linux çekirdeği tarafından tanınan aileler:

       İsim         Amaç                                     Kılavuz Sayfası
       AF_UNIX      Yerel iletişim                           unix(7)
       AF_LOCAL     AF_UNIX için eşanlamlı sözcük
       AF_INET      IPv4 İnternet protokolü                  ip(7)
       AF_AX25      Amatör radyo AX.25 protokolü             ax25(4)
       AF_IPX       IPX - Novell protokolleri
       AF_APPLETALK AppleTalk                                ddp(7)
       AF_X25       ITU-T X.25 / ISO-8208 protokolü          x25(7)
       AF_INET6     IPv6 İnternet protokolü                  ipv6(7)
       AF_DECnet    DECnet protokol soketleri                ipv6(7)
       AF_KEY       Anahtar yönetim protokolü, özgün  olarak
                    IPsec ile kullanım için geliştirildi
       AF_NETLINK   Çekirdek kullanıcı arayüzü aygıtı        netlink(7)
       AF_PACKET    Düşük seviye paket arayüzü               packet(7)
       AF_RDS       Güvenilir    veri    katarı    soketleri rds(7)
                    protokolü
                                                             rds-rdma(7)
       AF_PPPOX     L2 tünellerini ayarlamak için genel  PPP
                    aktarım katmanı (L2TP ve PPPoE)
       AF_LLC       Mantıksal  bağlantı  denetim (IEEE 802.2
                    LLC) protokolü
       AF_IB        InfiniBand doğal adresleme
       AF_MPLS      Çoklu protokol etiket değiştirme
       AF_CAN       Denetleyici alan ağı  otomotiv  veriyolu
                    protokolü
       AF_TIPC      TIPC, "küme alan soketleri" protokolü
       AF_BLUETOOTH Bluetooth düşük seviye soket protokolü
       AF_ALG       Çekirdek şifreleme API’sine arayüz
       AF_VSOCK     VSOCK (aslen  "VMWare  VSockets") yüksek vsock(7)
                    yönetici  ile  misafirin  iletişimi için
                    protokol
       AF_KCM       KCM   (çekirdek  bağlantı   çoğullayıcı)
                    arayüzü
       AF_XDP       XDP (hızlı veri yolu) arayüzü

       Yukarıdaki  adres aileleri ve diğer adres aileleri için ayrıntılı bilgiler address_families(7) sayfasında
       bulunabilir.

       socket() çağrısının type değişkeni iletişim türünü belirler. Tanımlı türler:

       SOCK_STREAM
           Sıralı, güvenli, çift yönlü, bağlantı temelli bayt akımı sağlar. Bant dışı (Out Of Band) veri  iletim
           mekanizması desteklenebilir.

       SOCK_DGRAM
           Veri katarını destekler (bağlantısız, sabit azami uzunluğa sahip güvenilmez iletiler).

       SOCK_SEQPACKET
           Sabit  azami  uzunluğa  sahip  veri  katarları için sıralı, güvenli, çift yönlü bağlantı temelli veri
           iletim yolu sağlar; bir alıcının, her girdi sistem çağrısında bir paketin tamamını okuması gerekir.

       SOCK_RAW
           Ham ağ protokolü erişimi sağlar.

       SOCK_RDM
           Düzeni garanti etmeyen güvenli veri katarı katmanı sağlar.

       SOCK_PACKET
           Eskidir ve yeni programlarda kullanılmamalıdır; packet(7) sayfasına bakın.

       Bazı soket türleri tüm protokol aileleri tarafından uygulanmayabilir.

       Linux 2.6.27’den itibaren, type değişkeni ikinci bir işleve sahiptir: soket türünü belirtmeye  ek  olarak
       socket()’in davranışını değiştirmek için aşağıdaki değerler bit düzeyinde VEYA’lanabilir:

       SOCK_NONBLOCK
           O_NONBLOCK  dosya  durum  bayrağını yeni dosya tanıtıcısını ifade eden açık dosya tanıtıcısına ayarla
           (open(2) sayfasına bakın). Bu bayrağı kullanmak,  fazladan  fcntl(2)  çağrılarından  tasarruf  etmeyi
           sağlar.

       SOCK_CLOEXEC
           Yürütmeyi  kapat  (Close  On Exec) (FD_CLOEXEC) bayrağını yeni dosya tanıtıcısına ayarla. Bunun neden
           faydalı olabileceği open(2) sayfasındaki O_CLOEXEC bayrağının açıklamasında bulunabilir.

       protocol değişkeninde, soket  ile  kullanılacak  protokol  belirtilir.  Normalde,  belirli  bir  protokol
       ailesindeki  belirli  bir  soket  türünü  desteklemek  için  yalnızca tek bir protokol vardır, bu nedenle
       protocol 0 olarak belirtilebilir. Ancak soket türünü destekleyen birden fazla protokolün  var  olması  da
       mümkündür,  bu  durumda bir protokolün belirtilmesi gereklidir. Kullanılacak protokol numarası iletişimin
       gerçekleşeceği "iletişim alanına" özeldir; protocols(5)  sayfasına  bakın.  Protokol  adlarının  protokol
       numaraları ile nasıl eşleneceği getprotoent(3) sayfasında açıklanmıştır.

       SOCK_STREAM  türündeki  soketler  tam çift yönlü bayt akımlarıdır. Kayıt sınırlarını korumazlar. Bir akım
       soketi, veri iletmeden  veya  almadan  önce  bağlanmış  durumda  olmalıdır.  Bir  başka  sokete  bağlantı
       oluşturmak için connect(2) çağrısı kullanılır. Bağlandıktan sonra, veri, read(2) ve write(2) çağrılarıyla
       veya  send(2)  ve  recv(2)  çağrılarının  bazı  türevleriyle taşınabilir. Oturum tamamlandığında close(2)
       çağrılabilir. Bant dışı (Out Of Band) veri send(2) sayfasında açıklandığı gibi iletilebilir veya  recv(2)
       sayfasında açıklandığı gibi alınabilir.

       SOCK_STREAM  kullanan  iletişim  protokolleri  verinin  kaybolmamasını  veya  kopyalanmamasını sağlar. Eş
       protokolün tampon alanına sahip bir veri parçası mantıklı  bir  süre  içerisinde  başarıyla  iletilemezse
       bağlantının  koptuğu  kabul  edilir.  Soket için SO_KEEPALIVE etkinleştirildiğinde, protokol kendine özgü
       şekilde karşı tarafın etkin olup olmadığına bakar. Eğer süreç, bozuk yayında veri  gönderir  veya  alırsa
       SIGPIPE sinyali oluşturulur; bu, sinyali işlemeyen ham süreçlerin çıkmasına neden olur. Tek fark, read(2)
       çağrısının  talep  edilen  veri miktarını döndürmesi, gelen paketteki kalan verilerin atılmasıdır. Ayrıca
       gelen veri katarlarındaki tüm ileti sınırları korunur.

       SOCK_DGRAM ve SOCK_RAW soketleri sendto(2) çağrısında belirtilen alıcıya veri  katarlarının  iletilmesini
       sağlar.  Veri  katarları  genellikle,  gönderenin  adresiyle  beraber  bir sonraki veri katarını döndüren
       recvfrom(2) çağrısı ile alınır.

       SOCK_PACKET kullanımı önerilmeyen bir soket türüdür ve doğrudan aygıt  sürücüsünden  ham  paket  alınması
       için kullanılır. Bunun yerine packet(7) kullanılmalıdır.

       fcntl(2)  çağrısının  F_SETOWN  işlemi,  bant  dışı (Out Of Band) veri geldiğinde SIGURG veya SOCK_STREAM
       bağlantısı beklenmedik şekilde koparsa SIGPIPE sinyalini alacak süreci veya süreç grubunu belirtmek  için
       kullanılabilir.  Bu  işlem  ayrıca, sıra beklemesiz G/Ç bildirimlerini ve G/Ç’ı SIGIO aracılığıyla alacak
       süreç ve süreç gruplarını belirtmek için  de  kullanılabilir.  F_SETOWN  kullanımı,  ioctl(2)  çağrısının
       FIOSETWON veya SIOCSPGRP değerleriyle kullanımına eşdeğerdir.

       Ağ,  protokol modülüne bir hata durumu (örneğin IP için ICMP iletisi kullanarak) sinyallediğinde bekleyen
       hata bayrağı sokete atanır. Bekleyen hatanın  kodunu,  soket  üzerindeki  sonraki  işlem  döndürür.  Bazı
       protokollerde  hata  üzerine  daha  ayrıntılı  bilgi  edinmek  için  sokete  özgü  hata kuyruğu kullanmak
       mümkündür; ip(7) sayfasındaki IP_RECVERR sabitine bakın.

       Soketin işlemleri, soket seviye seçenekleri ile kontrol edilir. Bu seçenekler  <sys/socket.h>  içerisinde
       tanımlanmıştır.  setsockopt(2)  ve  getsockopt(2)  işlevleri  bu  seçenekleri  atamak  ve sorgulamak için
       kullanılır.

DÖNÜŞ DEĞERİ

       Başarılı durumda, yeni soket için dosya tanıtıcısını döndürür. Hata durumunda, -1  döner  ve  hata  errno
       değişkenine atanır.

HATALAR

       EACCES
           Belirtilen türde ve/veya protokolde soket oluşturulma izni reddedildi.

       EAFNOSUPPORT
           Gerçekleme, belirtilen adres ailesini desteklenmiyor.

       EINVAL
           Protokol bilinmiyor veya protokol ailesi mevcut değil.

       EINVAL
           type değişkeninde belirtilen türler geçersiz.

       EMFILE
           Süreç başına açık dosya tanıtıcısı sayısı sınırına ulaşıldı.

       ENFILE
           Sistem genelinde açık dosya sayısı sınırına ulaşıldı.

       ENOBUFS veya ENOMEM
           Bellek yetersiz. Yeterli kaynak serbest bırakılmadığı sürece soket oluşturulamaz.

       EPROTONOSUPPORT
           Protokol türü veya belirtilen protokol, alan tarafından desteklenmiyor.

       Kullanılan protokol modülleri tarafından başka hatalar oluşturulabilir.

UYUMLULUK

       POSIX.1-2001, POSIX.1-2008 4.4BSD

       SOCK_NONBLOCK ve SOCK_CLOEXEC bayrakları Linux’a özgüdür.

       socket()  4.2BSD  ile  ortaya  çıktı.  Genellikle  BSD  soket katmanının klonlarını destekleyen (Sistem V
       türleri dahil) BSD olmayan sistemlere/sistemlerden taşınabilirdir.

EK BİLGİLER

       POSIX.1’de, <sys/types.h> dahil edilmeyi gerektirmez ve yine bu  başlık  dosyası  Linux’da  da  gerekmez.
       Fakat  bazı  tarihsel  (BSD)  uygulamalardan  ötürü  bu başlık dosyasının olması gerekir ve uygulamaların
       taşınabilirliği için dahil edilmesi akıllıca olacaktır.

       4.x BSD altında protokol aileleri için PF_UNIX ve PF_INET vb. sabitleri kullanılırken, AF_UNIX ve AF_INET
       vb. sabitleri adres aileleri için kullanılmaktadır. Ancak, zaten BSD kılavuz sayfasında  şunlar  geçiyor:
       "Protokol  ailesi  genellikle  adres  ailesiyle  aynıdır"  ve  sonraki  standartlar  artık her yerde AF_*
       sabitlerini kullanıyor.

ÖRNEKLER

       socket()’in örnek kullanımı getaddrinfo(3) sayfasında verilmiştir.

İLGİLİ BELGELER

       accept(2),  bind(2),  close(2),  connect(2),  fcntl(2),  getpeername(2),  getsockname(2),  getsockopt(2),
       ioctl(2),   listen(2),  read(2),  recv(2),  select(2),  send(2),  shutdown(2),  socketpair(2),  write(2),
       getprotoent(3), address_families(7), ip(7), socket(7), tcp(7), udp(7), unix(7)

       "An  Introductory  4.3BSD  Interprocess  Communication  Tutorial"  ve  "BSD  Interprocess   Communication
       Tutorial", UNIX Programcısının Ek Belgeleri Cilt 1’de yeniden basılmıştır.

ÇEVİREN

       © 2022 Fatih Koçer
       Bu çeviri özgür yazılımdır: Yasaların izin verdiği ölçüde HİÇBİR GARANTİ YOKTUR.
       Lütfen,  çeviri  ile ilgili bildirimde bulunmak veya çeviri yapmak için https://github.com/TLBP/manpages-
       tr/issues adresinde "New Issue" düğmesine tıklayıp yeni bir konu açınız ve isteğinizi belirtiniz.

Linux man-pages 5.10                              6 Eylül 2020                                         SOCKET(2)