CONNECT(2) | Sistem Çağrıları | CONNECT(2) |
connect - soket üzerinde bağlantı oluşturur
#include <sys/types.h> /* NOTLAR’a bakın */ #include <sys/socket.h>
connect() sistem çağrısı, sockfd ile belirtilen soketi addr ile belirtilen adrese bağlar. addrlen ile addr boyutu belirlenir. addr içindeki adresin biçimi, sockfd soketinin adres uzayı tarafından belirlenir; daha ayrıntılılı bilgi için socket(2) sayfasına bakılabilir.
Eğer soket sockfd SOCK_DGRAM türünden ise, addr, verilerin gönderildiği ve alındığı öntanımlı adres olur. Eğer soket SOCK_STREAM veya SOCK_SEQPACKET türünden ise, sistem çağrısı, addr ile ilişkilendirilen soketle bağlantı kurmaya çalışır.
Bazı protokol soketleri (örneğin UNIX alanı akım soketleri) sadece bir kere başarıyla connect() yapabilir.
Bazı protokol soketleri (örneğin UNIX ve İnternet alanları içerisindeki veri soketleri) bağlantılarını değiştirmek için connect()’i çok kez kullanabilir.
Bazı protokol soketleri (örneğin UNIX ve İnternet alanları içerisindeki TCP ve veri soketleri) sockaddr’in sa_family üyesi AF_UNSPEC olarak ayarlanmış bir adrese bağlanarak ilişkiyi çözebilir; sonrasında, soket bir başka adrese bağlanabilir. (AF_UNSPEC Linux’da, çekirdek 2.2’den itibaren desteklenmektedir.)
Bağlantı veya ilişkilendirme bşarılı ise sıfır döner. Hata durumunda -1 dönder ve hata errno değişkenine atanır.
Aşağıdaki hatalar genel soketler içindir. Diğer alanların özelinde başka hata kodları olabilir.
SElinux protokolü bağlantıyı reddederse de EACCES dönebilir (örneğin, HTTP vekilinin sadece HTTP sunucularıyla birleştirilmiş portlara bağlanabileceğine dair bir protokol varsa, ve vekil başka bir porta bağlanmaya çalıştıysa).
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (connect() ilk defa 4.2BSD ile ortaya çıktı).
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.
socklen_t’nin arka planı için accept(2) sayfasına bakın.
Eğer connect() başarılı olmazsa, soketin durumu belirtilmemiş olarak kabul edilir. Taşınabilir uygulamalar tekrar bağlanmak için soketi kapatmalı ve yeni bir tane oluşturmalıdır.
connect()’in örnek kullanımı getaddrinfo(3) sayfasında verilmiştir.
accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7), selinux(8)
© 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.
11 Nisan 2020 | Linux man-pages 5.10 |