Funzione setsockopt in c

Funzione setsockopt in c
“Una funzione setsockopt () è un concetto molto importante relativo al networking nella lingua C. È una funzione molto utile relativa alla presa. Per conoscere questa funzione, dobbiamo prima conoscere il concetto di una presa.

Un socket è un software integrato che controlla la rete totale ed è trattato come un endpoint per l'invio e la ricezione di pacchetti (dati) in tutta la rete. Si comporta come un comunicatore tra due nodi sulle stesse o diverse reti.

setSockopt () è una funzione nella programmazione socket (programma applicativo) per controllare questa comunicazione e allocare alcuni spazio buffer, controllo del tempo e nel campo della trasmissione."

Caratteristiche della funzione setsockopt ()

1. File di intestazione: la funzione setSockopt () è una funzione predefinita che la definizione è scritta in un file di intestazione nella libreria C chiamata file di intestazione.

2. Sintassi: int setsockopt (int socket, int livello, int option_name, const void *option_value, socketlen_t option_len);

3. restituzione: se la funzione setSockopt () esegue correttamente, restituisce zero. Ma l'esecuzione senza successo della funzione setSockopt () restituisce 0. Per questo restituisce un valore intero.

Applicazione della funzione setsockopt ()

La funzione setSockopt () è API. Usando questa API, possiamo impostare il nostro server o fornire l'opzione al nostro server per ascoltare la stessa parte.

Esempio 1

Facci sapere sull'implementazione della funzione setSockopt () in questo esempio di programmazione.

#includere
#includere
#includere
#includere
#includere
#includere
#includere
#includere
int main ()

int x1, x2, x3, x4;
if ((x1 = socket (af_inet, Sock_stream, 0)) < 0 )

Perror ("Controllare il dispositivo:");
uscita (0);

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

Perror ("Errore si è verificato a causa del fallimento della funzione:");
uscita (0);

printf ("\ n Il valore probabile di x2 è: = %d", x2);
x3 = 12324;
if (setsockopt (x1, sol_socket, so_sndbuf, (char*) e x3, sizeof (x3)) < 0 )

Perror ("le possibilità di incapacità di rispondere");
uscita (0);

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

Perror ("La funzione non risponde correttamente:");
uscita (0);

printf ("\ nthe il valore buffer è = %d \ n", x3);
restituzione 0;

Produzione

Spiegazione

Per eseguire questo programma, dobbiamo includere alcuni file di intestazione nel nostro codice sorgente come, e . Inizialmente, creeremo una presa per chiamare una funzione standard PRESA () e passare alcuni parametri standard all'interno della sua parentesi. Ora chiameremo la funzione getSockopt () per prendere il valore aggiornato per una presa e archiviarla all'interno di una variabile denominata x2. Ora imposteremo il valore sulla presa chiamando la funzione setSockopt (). Successivamente, controlleremo nuovamente il valore per la presa nel buffer utilizzando la funzione getSockopt () e stampare il suo valore.

Esempio-2

Qui vedremo un altro esempio della funzione setSockpt ().

#includere
#includere
#includere
#includere
#includere
#includere
int main (vuoto);
int main ()

int x1;
int x2;
Socklen_t x3 = sizeof (x2);
/ * Crea la definizione funzionale */
if ((x1 = socket (pf_inet, sock_stream, ipproto_tcp)) < 0 )

Perror ("Creazione del dispositivo:");
exit (exit_failure);

/ * Controllando la condizione del dispositivo funzionale */
if (getSockopt (x1, sol_socket, so_keepalive, & x2, & x3) < 0 )

Perror ("La funzione potrebbe non rispondere correttamente:");
chiudere (x1);
exit (exit_failure);

printf ("Lo stato della funzione di risposta è: %s \ n", (x2 ? " ACCESO SPENTO " ) ) ;
/ * Attiva l'opzione funzionale */
x2 = 1;
x3 = sizeof (x2);
if (setsockopt (x1, sol_socket, so_ekeepalive e x2, x3) < 0 )

Perror ("rilevare un po 'di errore");
chiudere (x1);
exit (exit_failure);

printf ("Questo valore funzionale è installato: \ n");
/ * Controlla di nuovo lo stato */
if (getSockopt (x1, sol_socket, so_keepalive, & x2, & x3) < 0 )

Perror ("Controlla un altro tempo:");
chiudere (x1);
exit (exit_failure);

printf ("Controlla la risposta in corso: %s \ n", (x2 ? " ACCESO SPENTO " ) ) ;
chiudere (x1);
usit (exit_success);
restituzione 0;

Produzione

Spiegazione

In questo esempio di programmazione, creeremo innanzitutto un socket con l'aiuto della funzione socket () e passeremo alcuni argomenti all'interno della sua parentesi per creare la presa. Successivamente, chiameremo la funzione getSockopt () per controllare gli stati socket. Ora chiameremo la funzione setSockopt () per impostare lo stato in modalità attiva. Ora controlleremo nuovamente lo stato della presa per eseguire la funzione getSockopt () e stampare lo stato corrente della presa utilizzando "Acceso o spento" modalità. In realtà, con l'aiuto di questo programma, vogliamo capire se lo stato Keepalive della presa è attivo o no.

Conclusione

Dalle caratteristiche, l'implementazione e l'esempio di programmazione della funzione setsockopt (), ci è chiaro molto bene che questa funzione è davvero utile nel caso della presa ai diversi livelli di rete. Con l'aiuto della funzione setsockopt (), possiamo fare cose diverse come manipolare la durata dell'invio e ricevere il buffer, i loro timeout, ecc. Ci fornisce anche la struttura del multicasting.