Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Možnosti zásuvky sú usporiadané podľa *úrovní *a *mená *. Úroveň určuje vrstvu protokolu, na ktorú sa voľba uplatňuje, zatiaľ čo názov identifikuje konkrétnu možnosť v rámci tejto úrovne. Bežné úrovne zahŕňajú:
* `sol_socket`: Táto úroveň sa vzťahuje na všetky typy zásuviek. Možnosti na tejto úrovni ovplyvňujú všeobecné správanie soketu. Príklady zahŕňajú:
* `So_reuseaddr`: Umožňuje väzbu na port, ktorý je už v stave Time_wait. Užitočné pre servery, ktoré sa musia rýchlo reštartovať.
* `So_reusePort`: Umožňuje viacerým procesom viazať sa na rovnakú adresu a port. Užitočné na vyváženie záťaže a zoskupovanie servera.
* `So_broadcast`: Umožňuje odosielanie vysielacích správ.
* `So_keePalive`: Umožňuje sondy na nažive na detekcii rozbitých pripojení.
* `So_linger`: Ovláda, ako sa soket správa pri zatvorení. Umožňuje pôvabné vypnutie alebo okamžité uzavretie.
* `So_sndbuf` a` So_rcvbuf`: Nastavte veľkosti vyrovnávacej pamäte odoslania a prijímania. Úprava ich môže zlepšiť výkon.
* `So_error`: Získava sa čakám na chybové podmienky na zásuvke.
* `ipproto_ip`: Táto úroveň sa vzťahuje na zásuvky IPv4. Možnosti ovplyvňujú, ako vrstva IP spracováva pakety. Príklady zahŕňajú:
* `ip_tos`: Nastavuje typ bitov služby (TOS) v hlavičke IP. Používa sa na úvahy o kvalite služieb (QoS).
* `ip_ttl`: Nastavuje čas na život (TTL), ktorá obmedzuje životnosť paketu.
* `ipproto_ipv6`: Táto úroveň je podobná ako „ipproto_ip`, ale pre zásuvky IPv6. Mnoho možností je analogických s ich náprotivkami IPv4.
* `ipproto_tcp`: Táto úroveň sa vzťahuje na zásuvky TCP. Možnosti tu ovládajte správanie špecifické pre TCP. Príklady zahŕňajú:
* `tcp_nodelay`: Zakáže algoritmus Nagle, ktorý pred odoslaním vyrovnáva malé pakety. Užitočné pre interaktívne aplikácie, ale môže znížiť účinnosť hromadných prevodov.
* `ipproto_udp`: Táto úroveň sa vzťahuje na zásuvky UDP. Možnosti sú tu relatívne málo v porovnaní s TCP.
Príklad (c):
Tento príklad ukazuje, ako nastaviť možnosť `So_reuseaddr` pomocou` setSockopt () `:
`` C
#include
#include
#include
#include
#include
#include
#include
int main () {
int sockfd;
struct socaddr_in serv_addr;
int opt =1; // na povolenie So_reuseaddr
sockfd =socket (af_inet, sock_stream, 0);
if (sockfd <0) {
Perror („Socket otvárania chýb“);
Výstup (1);
}
if (setSockopt (sockfd, sol_socket, So_reuseaddr, &opt, sizeof (opt)) <0) {
Perror („SetSockopt zlyhal“);
Výstup (1);
}
// ... Zvyšok vášho soketového kódu ...
Close (Sockfd);
návrat 0;
}
`` `
Tento útržok kódu vytvorí soket TCP a nastaví možnosť „So_reuseaddr`. Zahrnuté je spracovanie chýb, ktoré zobrazujú osvedčené postupy. Nezabudnite sa poradiť s manuálnymi stránkami vášho systému („Man 7 Socket`), kde nájdete kompletný zoznam dostupných možností soketu a ich použitie. Dostupnosť a správanie konkrétnych možností sa môžu mierne líšiť v závislosti od operačného systému a verzie jadra.