Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
sk2:sockets_caveats [2024/10/29 12:33] jkonczak [Protokół strumieniowy / zorientowany na wiadomość] |
sk2:sockets_caveats [2024/10/31 11:42] (aktualna) jkonczak [Funkcje blokujące / nieblokujące] |
||
---|---|---|---|
Linia 76: | Linia 76: | ||
* ''accept'' (czeka aż przyjdzie nowe połączenie) | * ''accept'' (czeka aż przyjdzie nowe połączenie) | ||
* ''gethostbyname'' / ''getaddrinfo'' (czeka na odpowiedź od serwera nazw, o ile zaszła konieczność odpytania). | * ''gethostbyname'' / ''getaddrinfo'' (czeka na odpowiedź od serwera nazw, o ile zaszła konieczność odpytania). | ||
- | <html><div style="margin-top:-1.4em"></html> | + | <html><div style="margin-top:-1.4em"></div></html> |
Funkcje wykonujące tylko operacje lokalne są nieblokujące. | Funkcje wykonujące tylko operacje lokalne są nieblokujące. | ||
\\ | \\ | ||
- | Przykłady takich funkcji (sieciowych) to: ''socket'', ''bind'', ''listen'', ''setsockopt'', ''gethostbyname'' / ''getaddrinfo'' (o ile funkcja nie odpytywała serwera nazw). | + | Przykłady takich funkcji (sieciowych) to: ''socket'', ''bind'', ''listen'', ''setsockopt'', ''gethostbyname'' / ''getaddrinfo'' (o ile funkcja nie odpytywała serwera nazw, co można wymusić odpowiednimi flagami).\\ |
- | <html></div></html> | + | <small>Funkcja zamykająca połączenie – ''shutdown'' – jest nieblokująca, natomiast funkcja zamykająca gniazdo – ''close'' – może się blokować dla gniazd połączeniowych dla których ustawiono na nim opcję SO_LINGER na czas wysłania danych z bufora systemowego, ale nie dłużej niż ilość sekund podana w opcji SO_LINGER[[https://pubs.opengroup.org/onlinepubs/9799919799/functions/close.html|[1]]].</small> |
Można zmienić domyśle blokujące zachowanie przestawiając gniazdo w //tryb nieblokujący//. | Można zmienić domyśle blokujące zachowanie przestawiając gniazdo w //tryb nieblokujący//. |