Unix Soketi - Özet

Soket programlamayla ilgili tüm işlevlerin listesi burada.

Liman ve Servis Fonksiyonları

Unix, hizmet adını / etc / services dosyasından almak için aşağıdaki işlevleri sağlar.

  • struct servent *getservbyname(char *name, char *proto) - Bu çağrı, bir hizmet adı ve bir protokol adı alır ve o hizmet için ilgili bağlantı noktası numarasını döndürür.

  • struct servent *getservbyport(int port, char *proto) - Bu çağrı bir bağlantı noktası numarası ve bir protokol adı alır ve ilgili hizmet adını döndürür.

Bayt Sıralama İşlevleri

  • unsigned short htons (unsigned short hostshort) - Bu işlev 16 bitlik (2 bayt) miktarları ana bilgisayar bayt sırasından ağ bayt sırasına dönüştürür.

  • unsigned long htonl (unsigned long hostlong) - Bu işlev 32 bitlik (4 bayt) miktarları ana bilgisayar bayt sırasından ağ bayt sırasına dönüştürür.

  • unsigned short ntohs (unsigned short netshort) - Bu işlev 16 bitlik (2 bayt) miktarları ağ bayt sırasından ana bilgisayar bayt sırasına dönüştürür.

  • unsigned long ntohl (unsigned long netlong) - Bu işlev, 32 bitlik miktarları ağ bayt sırasından ana bilgisayar bayt sırasına dönüştürür.

IP Adresi Fonksiyonları

  • int inet_aton (const char *strptr, struct in_addr *addrptr)- Bu işlev çağrısı, belirtilen dizeyi İnternet standart nokta gösteriminde bir ağ adresine dönüştürür ve adresi sağlanan yapıda depolar. Dönüştürülen adres Ağ Bayt Sırasına göre (soldan sağa sıralanan baytlar) olacaktır. Dize geçerliyse 1, hata durumunda 0 döndürür.

  • in_addr_t inet_addr (const char *strptr)- Bu işlev çağrısı, İnternet standart nokta gösteriminde belirtilen dizeyi İnternet adresi olarak kullanılmaya uygun bir tamsayı değerine dönüştürür. Dönüştürülen adres Ağ Bayt Sırasına göre (soldan sağa sıralanan baytlar) olacaktır. 32 bitlik ikili ağ baytı sıralı IPv4 adresi ve hata durumunda INADDR_NONE döndürür.

  • char *inet_ntoa (struct in_addr inaddr) - Bu işlev çağrısı, belirtilen ana bilgisayar adresini İnternet standardı nokta gösterimindeki bir dizeye dönüştürür.

Soket Çekirdek İşlevleri

  • int socket (int family, int type, int protocol) - Bu çağrı, sonraki sistem çağrılarında kullanabileceğiniz bir soket tanımlayıcısı döndürür veya hata durumunda -1 verir.

  • int connect (int sockfd, struct sockaddr *serv_addr, int addrlen)- Bağlan işlevi, bir TCP istemcisi tarafından bir TCP sunucusuyla bağlantı kurmak için kullanılır. Bu çağrı, sunucuya başarılı bir şekilde bağlanırsa 0 döndürür, aksi takdirde -1 döndürür.

  • int bind(int sockfd, struct sockaddr *my_addr,int addrlen)- Bağlama işlevi, bir sokete yerel bir protokol adresi atar. Bu çağrı, adrese başarılı bir şekilde bağlanırsa 0, aksi takdirde -1 ile döner.

  • int listen(int sockfd, int backlog)- Dinleme işlevi, istemci talebini dinlemek için yalnızca bir TCP sunucusu tarafından çağrılır. Bu çağrı, başarı durumunda 0 döndürür, aksi takdirde -1 döndürür.

  • int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)- Kabul işlevi, istemci isteklerini kabul etmek ve gerçek bağlantı kurmak için bir TCP sunucusu tarafından çağrılır. Bu çağrı, başarı durumunda negatif olmayan bir tanımlayıcı döndürür, aksi takdirde -1 döndürür.

  • int send(int sockfd, const void *msg, int len, int flags)- Gönderme işlevi, verileri akış soketleri veya BAĞLANTILI datagram soketleri üzerinden göndermek için kullanılır. Bu çağrı, gönderilen bayt sayısını döndürür, aksi takdirde -1 döndürür.

  • int recv (int sockfd, void *buf, int len, unsigned int flags)- Recv işlevi, veri akış soketleri veya BAĞLANTILI datagram soketleri üzerinden veri almak için kullanılır. Bu çağrı, arabelleğe okunan bayt sayısını döndürür, aksi takdirde hata durumunda -1 döndürür.

  • int sendto (int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)- sendto işlevi BAĞLANTISIZ datagram soketleri üzerinden veri göndermek için kullanılır. Bu çağrı gönderilen bayt sayısını döndürür, aksi takdirde hata durumunda -1 döndürür.

  • int recvfrom (int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen)- Recvfrom işlevi BAĞLANTISIZ datagram soketlerinden veri almak için kullanılır. Bu çağrı, arabelleğe okunan bayt sayısını döndürür, aksi takdirde hata durumunda -1 döndürür.

  • int close (int sockfd)- Kapatma işlevi, istemci ile sunucu arasındaki iletişimi kapatmak için kullanılır. Bu çağrı, başarı durumunda 0 döndürür, aksi takdirde -1 döndürür.

  • int shutdown (int sockfd, int how)- Kapatma işlevi, istemci ile sunucu arasındaki bir iletişimi incelikle kapatmak için kullanılır. Bu işlev, kapatma işlevine kıyasla daha fazla kontrol sağlar. Başarı halinde 0, aksi takdirde -1 döndürür.

  • int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) - Bu işlev, birden çok soketi okumak veya yazmak için kullanılır.

Soket Yardımcısı İşlevleri

  • int write (int fildes, const void *buf, int nbyte)- Yazma işlevi, buf ile gösterilen arabellekten nbyte baytlarını açık dosya tanıtıcısı fildes ile ilişkili dosyaya yazmaya çalışır. Başarılı bir şekilde tamamlandıktan sonra write (), fildes ile ilişkilendirilmiş dosyaya gerçekte yazılan bayt sayısını döndürür. Bu sayı hiçbir zaman nbayttan büyük değildir. Aksi takdirde -1 döndürülür.

  • int read (int fildes, const void *buf, int nbyte)- Okuma işlevi, açık dosya tanımlayıcısı fildes ile ilişkilendirilmiş dosyadan nbyte baytlarını tampon ile gösterilen arabelleğe okumaya çalışır. Başarılı bir şekilde tamamlandıktan sonra write (), fildes ile ilişkilendirilmiş dosyaya gerçekte yazılan bayt sayısını döndürür. Bu sayı hiçbir zaman nbayttan büyük değildir. Aksi takdirde -1 döndürülür.

  • int fork (void)- Çatal işlevi yeni bir süreç yaratır. Alt süreç adı verilen yeni süreç, çağıran sürecin (ana süreç) tam bir kopyası olacaktır.

  • void bzero (void *s, int nbyte)- bzero işlevi s dizesine nbyte boş bayt yerleştirir. Bu işlev, tüm soket yapılarını null değerlerle ayarlamak için kullanılacaktır.

  • int bcmp (const void *s1, const void *s2, int nbyte)- bcmp işlevi, s1 bayt dizesini s2 bayt dizesiyle karşılaştırır. Her iki dizenin de nbyte bayt uzunluğunda olduğu varsayılır.

  • void bcopy (const void *s1, void *s2, int nbyte)- bcopy işlevi nbyte baytlarını s1 dizesinden s2 dizesine kopyalar. Çakışan dizeler doğru şekilde işlenir.

  • void *memset(void *s, int c, int nbyte) - memset işlevi, bzero ile aynı şekilde yapı değişkenlerini ayarlamak için de kullanılır.