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.