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

İSİM

       send - bağlantılı soket üzerinden ileti yollar
       sendto - bağlantısız soket üzerinden ileti yollar
       sendmsg - soket üzerinden bir dizi ileti yollar

BİLDİRİM

       #include <sys/types.h>
       #include <sys/socket.h>

       ssize_t send (int sockfd, const void *buf, size_t len, int flags);

       ssize_t sendto (int  sockfd,  const  void  *buf,  size_t len, int flags, const struct sockaddr dest_addr,
                      socklen_t addrlen);

       ssize_t sendmsg (int sockfd, const struct msghdr *msg, int flags);

AÇIKLAMA

       send(), sendto() ve sendmsg() sistem çağrıları bir başka sokete ileti aktarmakta kullanılır.

       send() çağrısı soket sadece connected (bağlantılı) durumda ise kullanılabilir  (böylece  amaçlanan  alıcı
       biliniyor  olur).  send()  ve  write(2)  arasındaki  tek fark flags değişkeninin varlığıdır. Sıfır değeri
       atanmış flags değişkeni kullanan send() ile write(2) eşdeğerdir. Ayrıca aşağıdaki

           send(sockfd, buf, len, flags);

       çağrısı

           sendto(sockfd, buf, len, flags, NULL, 0);

       çağrısına eşdeğerdir. sockfd değişkeni, gönderen soketin dosya tanıtıcısıdır.

       Eğer sendto() bağlantılı bir soket (SOCK_STREAM, SOCK_SEQPACKET) ile kullanılırsa, dest_addr  ve  addrlen
       değişkenleri  görmezden  gelinir  (eğer  bunlar NULL ve 0 değilse EISCONN hatası dönebilir) ve eğer soket
       bağlanmadıysa ENOTCONN hatası döner. Bağlantısız soketle kullanımda, dest_addr hedefin adresini,  addrlen
       ise  hedef  adresin  boyutunu  belirler.  sendmsg()  için  hedef  adres  msg.msg_name  ile  belirtilir ve
       msg.msg_namelen boyutunu belirler.

       send() ve sendto() için, ileti buf tamponu içinde tutulur ve  len  uzunluktadır.  sendmsg()  için,  ileti
       msg.msg_iov  dizisindeki  öğelerle  gösterilir. sendmsg() çağrısı yardımcı verinin de yollanmasını sağlar
       (denetim bilgisi de denir).

       Eğer ileti ilgili protokol için bütün olarak gönderilemeyecek kadar uzunsa, EMGSIZE hatası döner ve ileti
       gönderilmez.

       send() işlevinde teslimatın yapılmadığını gösteren hiçbir belirti yoktur. Yerel olarak hatalar  -1  dönüş
       değeri ile saptanır.

       İleti  soketin  gönderim  tamponuna  sığmadığında,  send() eğer soket engellemesiz G/Ç kipine alınmadıysa
       engellenir. Engellemesiz kip başarısız olduğunda EAGAIN veya EWOULDBLOCK döner.  select(2)  çağrısı  daha
       fazla veri gönderme olasılığını saptamak için kullanılabilir.

   flags değerleri
       flags  değişkeninin  değeri  ya  sıfırdır  ya  da  aşağıdaki sabitlerin bit düzeyinde veyalanmasıyla elde
       edilir.

       MSG_CONFIRM (Linux 2.3.15 ve sonrası)
           Bağlantı katmanına yönlendirme sürecinin durumunu bildir: Karşı taraftan başarılı  bir  yanıt  aldın.
           Eğer  bağlantı  katmanı bunu alamazsa komşusunu düzenli olarak uyarır (örneğin, tek noktaya ARP ile).
           Sadece SOCK_DGRAM ve SOCK_RAW  soketleri  için  geçerli  olup  şimdilik  sadece  IPv4  ve  IPv6  için
           gerçeklenmiştir. Ayrıntılar için arp(7) sayfasına bakın.

       MSG_DONTROUTE
           Paketi  yollamak için geçit kullanma, doğrudan bağlı ağdaki konaklara gönder. Bu genellikle teşhis ve
           yönlendirme  uygulamaları  tarafından  kullanılır.  Bu  sadece  yönlendirme  yapan  protokoller  için
           tanımlanmıştır; paket soketleri için değil.

       MSG_DONTWAIT (Linux 2.2 ve sonrası)
           Engellemesiz işlemi etkinleştirir; eğer işlem engellenirse, EAGAIN veya EWOULDBLOCK döner. O_NONBLOCK
           seçeneği  tanımlanmış  (fcntl(2)  üzerinden  F_SETFL  işlemi  ile)  gibi davranır, fakat MSG_DONTWAIT
           çağrıya özel olmasıyla fark oluşturur. O_NONBLOCK seçeneği ise açık dosya tanıtıcısı içindir (open(2)
           sayfasına  bakın),  çağrı  sürecindeki  tüm  evreleri  ve  aynı  zamanda  aynı  açık  dosyanın  dosya
           tanıtıcılarına sahip diğer süreçleri de etkiler.

       MSG_EOR (Linux 2.2 ve sonrası)
           Bir kaydı sonlandırır (bu kavram SOCK_SEQPACKET türündeki soketlerdeki gibi destekleniyorsa).

       MSG_MORE (Linux 2.4.4 ve sonrası)
           Çağrıcının  hala  yollayacağı veri var. Bu seçenek TCP_CORK soket seçeneğine ait etkiyi TCP soketleri
           ile elde etmek için kullanılır (tcp(7) sayfasına bakın). Bu seçeneğin farkı çağrıya özel olmasıdır.

           Linux 2.6’dan itibaren, bu seçenek UDP soketleri için  de  desteklenmektedir.  Çekirdeğe,  sadece  bu
           seçenek  belirtilmeksizin yapılan bir çağrı ile aktarım yapılan tek bir verikatarına gönderilecek tüm
           veriyi bu seçenek kullanılarak yapılan çağrılarla gönderilecek şekilde paketlemesini söyler.  (Ayrıca
           udp(7)’de açıklanan UDP_CORK soket seçeneğine de bakın.)

       MSG_NOSIGNAL (Linux 2.2 ve sonrası)
           Eğer  akım  odaklı  soket karşıdan bağlantıyı kapattıysa SIGPIPE sinyali üretme. EPIPE hatası yine de
           döner. SIGPIPE sinyalini görmezden gelmek için sigaction(2) kullanımına benzer bir  davranış  sağlar,
           fakat  MSG_NOSIGNAL  çağrıya  özeldir, SIG_PIPE sinyalinin görmezden gelinmesi sürecin tüm evrelerini
           etkileyen bir süreç özelliğinin atanmasına sebep olur.

       MSG_OOB
           Veriyi bantdışı (Out Of Band) veriyi  destekleyen  soketlere  gönderir  (örneğin  SOCK_STREAM  türü);
           kullanılan protokol bantdışı veriyi desteklemelidir.

   sendmsg()
       sendmsg() ile kullanılan msghdr yapısının tanımı:

           struct msghdr {
                void         *msg_name;       /* isteğe bağlı adres */
                socklen_t     msg_namelen;    /* adresin boyutu */
                struct iovec *msg_iov;        /* dağıtma/toplama dizisi */
                size_t        msg_iovlen;     /* msg_iov içindeki öğe sayısı */
                void         *msg_control;    /* yardımcı veri, aşağıya bakınız */
                size_t        msg_controllen; /* yardımcı veri tampon boyutu */
                int           msg_flags;      /* seçenekler (kullanılmıyor) */
            };

       msg_name  alanı  bağlantısız  bir  soket  üzerinde verikatarı için hedef adresini belirtmekte kullanılır.
       Adresi içeren tampona göstericidir; msg_namelen alanına adresin boyutu atanmalıdır. Bağlantılı bir  soket
       için, bu alanlar sırasıyla NULL ve 0 olarak belirtilmelidir.

       msg_iov ve msg_iovlen alanları writev(2) çağrısındaki gibi dağıtma-toplama konumlarını belirtir.

       msg_control  ve  msg_controllen  kullanılarak denetim bilgisi (yardımcı bilgi) gönderilebilir. Çekirdeğin
       soket başına  işleyebileceği  denetim  tamponunun  azami  boyutu  /proc/sys/net/core/optmem_max  içindeki
       değerle  sınırlanmıştır;  socket(7)  sayfasına  bakın.  Yardımcı verilerin çeşitli soketlerde kullanımına
       ilişkin ayrıntılılı bilgi edinmek için unix(7) ve ip(7) sayfasına bakın.

       msg_flags alanı görmezden gelinir.

DÖNÜŞ DEĞERİ

       Başarı durumunda bu çağrılar gönderilen baytların sayısını döndürür. Hata durumunda,  -1  döner  ve  hata
       errno değişkenine atanır.

HATALAR

       Soket  katmanı  tarafından  üretilen  bazı standart hatalar vardır. Ayrıca, kullanılan protokol modülleri
       tarafından üretilen ve döndürülen hatalar da olabilir; bilgi için  bunlarla  ilgili  kılavuz  sayfalarına
       bakın.

       EACCES
           (Dosya  yoluna  göre tanınan UNIX alan soketleri için) Hedef soket dosyası için yazma izni veya dosya
           yolundaki bir dizin için arama izni reddedilmiş. (Ayrıca path_resolution(7) sayfasına da bakın.)

           (UDP soketleri için) Ağ/yayın adresine veri yollanmak için girişimde bulunulmuş ancak adres tek nokta
           için.

       EAGAIN veya EWOULDBLOCK
           Soket engellemesiz olarak işaretlenmiş ama talep edilen işlem soketi engelleyecek.  POSIX.1-2001  her
           iki  hatanın  da  döndürülmesine  izin  verir  ve bu sabitlerin aynı değerde olmasını gerektirmez, bu
           bakımdan taşınabilir uygulamalar her iki seçeneği de sınamalıdır.

       EAGAIN
           (İnternet alanı verikatarı soketleri için)  sockfd  ile  belirtilen  soket,  önceden  bir  adres  ile
           ilişkilendirilmemiş  ve soketi geçici bir portla ilişkilendirmeye çalışırken geçici port aralığındaki
           tüm portların kullanımda olduğu anlaşılmış. ip(7) sayfasındaki /proc/sys/net/ipv4/ip_local_port_range
           ile ilgili açıklamaya bakınız.

       EALREADY
           Başka bir Hızlı Açma işlemde.

       EBADF
           Belirtilen sockfd geçerli bir açık dosya tanıtıcısı değil.

       ECONNRESET
           Bağlantı karşıdan sıfırlandı.

       EDESTADDRREQ
           Soket bağlantılı kipte değil ve karşı adres atanmamış.

       EFAULT
           Belirtilen kullanıcı adres uzayı geçersiz.

       EINTR
           Veri gönderilmeden önce bir sinyal alınmış; signal(7) sayfasına bakın.

       EINVAL
           Belirtilen değer geçersiz.

       EISCONN
           Bağlantılı kipteki soket zaten bağlı ancak bir alıcı belirtilmiş. (Ya bu hata döner ya da  belirtilen
           alıcı dikkate alınmaz.)

       EMSGSIZE
           Soket  türü  iletinin  bütün  olarak  gönderilmesini gerektiriyor ancak iletinin boyutu bunu imkansız
           kılıyor.

       ENOBUFS
           Ağ arabiriminin çıktı kuyruğu dolu. Bu, genellikle arabirimin göndermeyi durdurduğunu gösterir, ancak
           geçici bir tıkanıklıktan ötürü de olabilir.  (Normalde  bu  durum  Linux’ta  olmaz.  Aygıtın  kuyruğu
           taşarsa paketler sessizce düşürülür.)

       ENOMEM
           Yeterli bellek yok.

       ENOTCONN
           Soket bağlantısız ve bir hedef belirtilmemiş.

       ENOTSOCK
           Belirtilen sockfd’nin bir soketle ilgisi yok.

       EOPNOTSUPP
           flags değişkenindeki bazı bitler soket türüyle uyumsuz.

       EPIPE
           Bağlantı  yönelimli  sokette  yerel  uç kapatılmış. Bu durumda, MSG_NOSIGNAL atanmamışsa işlem ayrıca
           SIGPIPE sinyalini de alır.

UYUMLULUK

       4.4BSD, SVr4, POSIX.1-2001. Bu arayüzler ilk defa 4.2BSD ile ortaya çıktı.

       POSIX.1-2001 sadece MSG_OOB ve MSG_EOR seçeneklerini açıklar. POSIX.1-2008  MSG_NOSIGNAL’e  bir  belirtim
       ekler. MSG_CONFIRM seçeneği ise Linux eklentisidir.

EK BİLGİ

       POSIX.1-2001’e  göre,  msghdr yapısının msg_controllen alanı socklen_t türünden, msg_iovlen alanı ise int
       türünde olmalıdır, fakat glibc ikisine de size_t türünü atar.

       Tek çağrıda çok sayıda verikatarı iletmek için kullanılan Linux’a  özgü  sistem  çağrısı  hakkında  bilgi
       edinmek için sendmmsg(2) sayfasına bakın.

HATALAR

       Linux, ENOTCONN yerine EPIPE döndürebilir.

ÖRNEKLER

       sendto() kullanım örneği getaddrinfo(3) sayfasında verilmiştir.

İLGİLİ BELGELER

       fcntl(2),  getsockopt(2), recv(2), select(2), sendfile(2), sendmmsg(2), shutdown(2), socket(2), write(2),
       cmsg(3), ip(7), ipv6(7), socket(7), tcp(7), udp(7), unix(7)

Ç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                              1 Kasım 2020                                           SEND(2)