Provided by: manpages-tr_2.0.6-2_all 

İ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)