Funkcja setsockopt w c

Funkcja setsockopt w c
„Funkcja setsockopt () to bardzo ważna koncepcja związana z tworzeniem sieci w języku C. Jest to bardzo przydatna funkcja związana z gniazdem. Aby wiedzieć o tej funkcji, najpierw musimy znać koncepcję gniazda.

Gniazdo to oprogramowanie wbudowane, które kontroluje całkowitą sieć i jest traktowane jako punkt końcowy do wysyłania i odbierania pakietów (danych) w całej sieci. Zachowuje się jak komunikator między dwoma węzłami w tych samych lub różnych sieciach.

setsockopt () to funkcja programowania gniazda (program aplikacji) w celu kontrolowania tej komunikacji i przydzielenia przestrzeni bufora, kontroli czasu oraz w dziedzinie nadawania."

Charakterystyka funkcji setsockopt ()

1. Plik nagłówka: funkcja setsockopt () to predefiniowana funkcja, którą definicja jest zapisana w pliku nagłówka w bibliotece C o nazwie plik nagłówka.

2. Składnia: int setsockopt (int gniazdo, poziom int, int option_name, const void *option_value, socketlen_t option_len);

3. return: jeśli funkcja setsockopt () wykonuje poprawnie, zwraca zero. Ale nieudane wykonanie funkcji setsockopt () zwraca 0. W tym celu zwraca wartość całkowitą.

Zastosowanie funkcji setsockopt ()

funkcja setsockopt () to interfejs API. Korzystając z tego interfejsu API, możemy ustawić nasz serwer lub podać opcję naszemu serwerowi, aby wysłuchać tej samej części.

Przykład 1

Daj nam znać o implementacji funkcji setSockOPt () w tym przykładzie programowania.

#włączać
#włączać
#włączać
#włączać
#włączać
#włączać
#włączać
#włączać
int main ()

int x1, x2, x3, x4;
if ((x1 = gniazdo (af_inet, sock_stream, 0)) < 0 )

Perror („Sprawdzanie urządzenia:”);
wyjście (0);

x4 = sizeof (x2);
if (getSockopt (x1, ipproto_tcp, tcp_maxseg, (char*) i x2 i x4) < 0 )

Perror („Wystąpił błąd z powodu awarii funkcji:”);
wyjście (0);

printf („\ n Wartość probabystyczna x2 to: = %d”, x2);
x3 = 12324;
if (setsockopt (x1, sol_socket, so_sndbuf, (char*) i x3, sizeof (x3)) < 0 )

Perror („Szanse na brak odpowiedzi”);
wyjście (0);

x4 = sizeof (x3);
if (getSockopt (x1, sol_socket, so_sndbuf, (char*) i x3 i x4) < 0 )

Perror („Funkcja nie reaguje poprawnie:”);
wyjście (0);

printf („\ n Wartość bufora to = %d \ n”, x3);
powrót 0;

Wyjście

Wyjaśnienie

Aby zrealizować ten program, musimy dołączyć plik nagłówka w naszym kodzie źródłowym, takim jak, i . Początkowo utworzymy gniazdo, aby wywołać standardową funkcję gniazdo elektryczne () i przekaż niektóre standardowe parametry w swoim nawiasie. Teraz wywołamy funkcję getsockopt (), aby przyjąć zaktualizowaną wartość dla gniazda i przechowywać ją w zmiennej o nazwie x2. Teraz ustawimy wartość na gniazdo, wywołując funkcję setsockopt (). Następnie ponownie sprawdzimy wartość gniazda w buforze za pomocą funkcji getsockopt () i wydrukuje jej wartość.

Przykład-2

Tutaj zobaczymy kolejny przykład funkcji setsockpt ().

#włączać
#włączać
#włączać
#włączać
#włączać
#włączać
int main (void);
int main ()

int x1;
int x2;
socklen_t x3 = sizeof (x2);
/ * Utwórz definicję funkcjonalną */
if ((x1 = gniazdo (pf_inet, sock_stream, iproto_tcp)) < 0 )

Perror („Tworzenie urządzenia:”);
exit (exit_failure);

/ * Sprawdzanie stanu urządzenia funkcjonalnego */
if (getSockopt (x1, sol_socket, so_keepalive i x2 i x3) < 0 )

Perror („Funkcja może nie reagować poprawnie:”);
Zamknij (x1);
exit (exit_failure);

printf („Stan funkcji odpowiadającej to: %s \ n”, (x2 ? „On”: „off”));
/ * Aktywuj opcję funkcjonalną */
x2 = 1;
x3 = sizeof (x2);
if (setsockopt (x1, sol_socket, so_keepalive i x2, x3) < 0 )

Perror („Wykrywanie pewnej winy”);
Zamknij (x1);
exit (exit_failure);

printf („Ta wartość funkcjonalna jest zainstalowana: \ n”);
/ * Sprawdź ponownie status */
if (getSockopt (x1, sol_socket, so_keepalive i x2 i x3) < 0 )

Perror („Sprawdzanie innego czasu:”);
Zamknij (x1);
exit (exit_failure);

printf („Sprawdzanie bieżącej odpowiedzi: %s \ n”, (x2 ? „On”: „off”));
Zamknij (x1);
exit (exit_success);
powrót 0;

Wyjście

Wyjaśnienie

W tym przykładzie programowania najpierw utworzymy gniazdo za pomocą funkcji socket () i przekazamy niektóre argumenty w jej nawiasie, aby zrobić gniazdo. Następnie wywołamy funkcję getsockopt (), aby sprawdzić stany gniazda. Teraz wywołamy funkcję setsockopt (), aby ustawić stan w trybie aktywnym. Teraz ponownie sprawdzimy stan gniazda, aby uruchomić funkcję getsockopt () i wydrukować bieżący stan gniazda za pomocą "Włączone lub wyłączone" tryb. W rzeczywistości z pomocą tego programu chcemy zrozumieć, czy stan utrzymania gniazda jest aktywny, czy nie.

Wniosek

Z charakteru, implementacji i przykładu programowania funkcji setsockopt (), bardzo dobrze jest nam, że ta funkcja jest naprawdę pomocna w przypadku gniazda na różnych poziomach sieciowych. Za pomocą funkcji setsockopt () możemy robić różne rzeczy, takie jak manipulowanie długością wysyłania i odbierania buforu, ich limit czasu itp. Zapewnia nam również obiekt multiemisji.