Gniazdo Unix - podsumowanie
Oto lista wszystkich funkcji związanych z programowaniem gniazd.
Funkcje portów i usług
Unix udostępnia następujące funkcje do pobierania nazwy usługi z pliku / etc / services.
struct servent *getservbyname(char *name, char *proto) - To wywołanie przyjmuje nazwę usługi oraz nazwę protokołu i zwraca odpowiedni numer portu dla tej usługi.
struct servent *getservbyport(int port, char *proto) - To wywołanie przyjmuje numer portu i nazwę protokołu oraz zwraca odpowiednią nazwę usługi.
Funkcje porządkowania bajtów
unsigned short htons (unsigned short hostshort) - Ta funkcja konwertuje wartości 16-bitowe (2-bajtowe) z kolejności bajtów hosta na kolejność bajtów sieci.
unsigned long htonl (unsigned long hostlong) - Ta funkcja konwertuje wielkości 32-bitowe (4-bajtowe) z kolejności bajtów hosta na kolejność bajtów sieci.
unsigned short ntohs (unsigned short netshort) - Ta funkcja konwertuje wartości 16-bitowe (2-bajtowe) z sieciowej kolejności bajtów na kolejność bajtów hosta.
unsigned long ntohl (unsigned long netlong) - Ta funkcja konwertuje ilości 32-bitowe z kolejności bajtów sieci na kolejność bajtów hosta.
Funkcje adresu IP
int inet_aton (const char *strptr, struct in_addr *addrptr)- To wywołanie funkcji konwertuje określony ciąg w standardowej notacji internetowej z kropką na adres sieciowy i zapisuje adres w podanej strukturze. Przekonwertowany adres będzie w sieciowej kolejności bajtów (bajty uporządkowane od lewej do prawej). Zwraca 1, jeśli ciąg jest prawidłowy i 0 w przypadku błędu.
in_addr_t inet_addr (const char *strptr)- To wywołanie funkcji konwertuje określony ciąg w standardowej notacji z kropkami w Internecie na wartość całkowitą, która może być używana jako adres internetowy. Przekonwertowany adres będzie w sieciowej kolejności bajtów (bajty uporządkowane od lewej do prawej). Zwraca 32-bitowy binarny adres sieciowy uporządkowany w bajtach IPv4 i INADDR_NONE w przypadku błędu.
char *inet_ntoa (struct in_addr inaddr) - To wywołanie funkcji konwertuje określony adres hosta internetowego na ciąg znaków w standardowej notacji kropkowej.
Funkcje rdzenia gniazda
int socket (int family, int type, int protocol) - To wywołanie zwraca deskryptor gniazda, którego możesz użyć w późniejszych wywołaniach systemowych lub daje -1 w przypadku błędu.
int connect (int sockfd, struct sockaddr *serv_addr, int addrlen)- Funkcja connect jest używana przez klienta TCP do nawiązywania połączenia z serwerem TCP. To wywołanie zwraca 0, jeśli pomyślnie łączy się z serwerem, w przeciwnym razie zwraca -1.
int bind(int sockfd, struct sockaddr *my_addr,int addrlen)- Funkcja bind przypisuje adres protokołu lokalnego do gniazda. To wywołanie zwraca 0, jeśli pomyślnie połączy się z adresem, w przeciwnym razie zwraca -1.
int listen(int sockfd, int backlog)- Funkcja nasłuchiwania jest wywoływana tylko przez serwer TCP w celu nasłuchiwania żądania klienta. To wywołanie zwraca 0 po pomyślnym zakończeniu, w przeciwnym razie zwraca -1.
int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)- Funkcja akceptacji jest wywoływana przez serwer TCP w celu akceptowania żądań klientów i ustanowienia rzeczywistego połączenia. To wywołanie w przypadku pomyślnego zakończenia zwraca nieujemny deskryptor, w przeciwnym razie zwraca -1.
int send(int sockfd, const void *msg, int len, int flags)- Funkcja wysyłania służy do wysyłania danych przez gniazda strumieniowe lub gniazda datagramowe CONNECTED. To wywołanie zwraca liczbę wysłanych bajtów, w przeciwnym razie zwraca -1.
int recv (int sockfd, void *buf, int len, unsigned int flags)- Funkcja recv służy do odbierania danych przez gniazda strumieniowe lub gniazda datagramowe CONNECTED. To wywołanie zwraca liczbę bajtów wczytanych do bufora, w przeciwnym razie zwraca -1 w przypadku błędu.
int sendto (int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen)- Funkcja sendto służy do wysyłania danych przez NIEPODŁĄCZONE gniazda datagramowe. To wywołanie zwraca liczbę wysłanych bajtów, w przeciwnym razie zwraca -1 w przypadku błędu.
int recvfrom (int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen)- Funkcja recvfrom służy do odbierania danych z gniazd datagramowych UNCONNECTED. To wywołanie zwraca liczbę bajtów wczytanych do bufora, w przeciwnym razie zwraca -1 w przypadku błędu.
int close (int sockfd)- Funkcja close służy do zamykania komunikacji między klientem a serwerem. To wywołanie zwraca 0 po pomyślnym zakończeniu, w przeciwnym razie zwraca -1.
int shutdown (int sockfd, int how)- Funkcja zamykania służy do bezpiecznego zamykania komunikacji między klientem a serwerem. Ta funkcja zapewnia większą kontrolę w porównaniu z funkcją zamykania. Po pomyślnym zakończeniu zwraca 0, w przeciwnym razie -1.
int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) - Ta funkcja służy do odczytu lub zapisu wielu gniazd.
Funkcje pomocnicze gniazda
int write (int fildes, const void *buf, int nbyte)- Funkcja zapisu próbuje zapisać n-bajtów bajtów z bufora wskazywanego przez buf do pliku skojarzonego z deskryptorem otwartego pliku, fildes. Po pomyślnym zakończeniu write () zwraca liczbę bajtów faktycznie zapisanych w pliku powiązanym z fildami. Ta liczba nigdy nie jest większa niż nbajtów. W przeciwnym razie zwracane jest -1.
int read (int fildes, const void *buf, int nbyte)- Funkcja odczytu próbuje odczytać n-bajtów bajtów z pliku skojarzonego z deskryptorem otwartego pliku, fildes, do bufora wskazywanego przez buf. Po pomyślnym zakończeniu write () zwraca liczbę bajtów faktycznie zapisanych w pliku powiązanym z fildami. Ta liczba nigdy nie jest większa niż nbajtów. W przeciwnym razie zwracane jest -1.
int fork (void)- Funkcja widelca tworzy nowy proces. Nowy proces, zwany procesem potomnym, będzie dokładną kopią procesu wywołującego (proces nadrzędny).
void bzero (void *s, int nbyte)- Funkcja bzero umieszcza nbyte null bajtów w łańcuchu s. Ta funkcja zostanie użyta do ustawienia wszystkich struktur gniazd na wartości null.
int bcmp (const void *s1, const void *s2, int nbyte)- Funkcja bcmp porównuje łańcuch bajtów s1 z łańcuchem bajtów s2. Zakłada się, że oba łańcuchy mają długość n-bajtów.
void bcopy (const void *s1, void *s2, int nbyte)- Funkcja bcopy kopiuje nbajt bajtów z łańcucha s1 do łańcucha s2. Nakładające się ciągi są obsługiwane poprawnie.
void *memset(void *s, int c, int nbyte) - Funkcja memset jest również używana do ustawiania zmiennych strukturalnych w taki sam sposób jak bzero.