Czy połączenie blokuje?
Czy połączenie blokuje?

Wideo: Czy połączenie blokuje?

Wideo: Czy połączenie blokuje?
Wideo: Blokowanie niechcianych połączeń #android #androidhack #androidtips #shorts 2024, Kwiecień
Anonim

łączyć jest bloking zadzwoń domyślnie, ale możesz to wyłączyć bloking przekazując do gniazda flagę SOCK_NONBLOCK. łączyć () blokuje się aż do zakończenia uzgadniania trójetapowego protokołu TCP. Uzgadnianie po stronie nasłuchującej jest obsługiwane przez stos TCP/IP w jądrze i kończone bez powiadamiania procesu użytkownika.

Podobnie pyta się, co to jest gniazdo blokujące, a co nie blokujące?

w bloking tryb, odbierz, wyślij, połącz (tylko TCP) i zaakceptuj (tylko TCP) gniazdo elektryczne Wywołania API będą blok na czas nieokreślony do momentu wykonania żądanej czynności. w nie - bloking w trybie, te funkcje wracają natychmiast. wybierz będzie blok dopóki gniazdo elektryczne jest gotowy.

co to jest funkcja blokująca? A funkcja blokowania w zasadzie oblicza w nieskończoność. To właśnie oznacza bloking . Inne blokowanie funkcji czekałby na IO. nie- bloking System IO oznacza funkcjonować rozpoczyna akcję IO, następnie przechodzi w stan bezczynności, a następnie obsługuje wynik akcji IO, gdy to się dzieje.

Następnie pojawia się pytanie, czy gniazdo akceptuje blokowanie?

zaakceptować () blokuje rozmówcę do momentu nawiązania połączenia. Jeśli brak miejsca na wiadomości w gniazdo elektryczne aby zatrzymać wiadomość do przesłania, wtedy send() normalnie blokuje. Jeśli żadne wiadomości nie są dostępne w gniazdo elektryczne , recv call czeka na wiadomość.

Czy wybierz blok?

Jeśli argument timeout wskazuje na obiekt typu struct timeval, którego członkowie mają wartość 0, Wybierz () nie blok . Jeśli argument limitu czasu ma wartość NULL, Wybierz () blokuje się, dopóki zdarzenie nie spowoduje zwrócenia jednej z masek z prawidłową (niezerową) wartością.

Zalecana: