Socket Accetta la funzione 2 C

Socket Accetta la funzione 2 C
Ogni volta che un nodo riceve un pacchetto di richiesta, questo potrebbe accettarlo e stabilire la connessione. Il metodo accetta () è stato impiegato per raggiungere questo obiettivo. Le richieste di connessione di molti utenti sono talvolta gestite da una presa che è stata impostata come server. La presa iniziale sul server in qualche modo non accetta la connessione. Piuttosto, introduce una presa unica che si unisce alla connessione. La funzione accetta () fornisce l'identificatore del socket. Il connettore principale del server è ancora aperto e pronto ad accettare nuove connessioni in arrivo.

Forse sul terminale del server, il numero di richieste in arrivo correnti è limitato. Se le chiamate in arrivo del client arrivano più rapidamente, il server può elaborare i dati, la coda potrebbe essere sovraccarica e le future richieste in arrivo saranno negate da un'eccezione econnrefusa. La dimensione di questa coda è fornita come parametro al metodo di ascolto. Tuttavia, l'installazione invocherà la sua limitazione integrata sulla dimensione del pacchetto.

Con i protocolli del terminale pacchetti (Sock_Stream, Sock_SeqPacket), utilizza il metodo accetta (). Accetta il primo pacchetto di richiesta per la porta ricevente, Sockfd, dalla coda delle richieste in arrivo, stabilisce una nuova porta associata e fornisce un nuovo file particolare per il connettore. La connessione appena formata non è configurata per ascoltare. Questa funzione non influisce sul terminale primario Sockfd.

Sintassi della funzione Accetta la funzione C nella lingua C

# int accet (int Sockfd, struct Sockaddr *addr, Socklen_t *addrlen)

La funzione accetta () contiene parametri diversi, che includono Sockfd, *ADDR e *ADDRLlen. I seguenti sono i dettagli di questi argomenti:

Il parametro "Sockfd" è una porta sviluppata utilizzando una presa, collegata a un indirizzo fisico da Bind. Ma sta anche aspettando le voci dopo un ascolto.

Il parametro "ADDR" è un puntatore di configurazione "Sockaddr". La posizione della porta peer è determinata dal livello di networking ed è somministrata in questo elemento. La classe IP del socket indica la sintassi ottimale dell'IP fornita da "ADDR". Nulla sarebbe stato caricato quando il parametro "ADDR" diventa nullo; "Addrlen" non è mai stato utilizzato in questa situazione e dovrà anche essere nullo.

Il parametro "addrlen" è un parametro di valutazione: il ricevitore può configurarlo con la dimensione della struttura a cui si fa riferimento il parametro "ADDR" e fornirebbe la dimensione originale della porta di riferimento. Se la cache specificata è troppo limitata, il valore recuperato verrà tagliato. In questa situazione, il parametro "addrlen" produrrà un output considerevolmente più grande del valore fornito alla funzione.

La funzione accetta () contiene il client a meno che non venga rilevata una connessione quando non ci sono richieste esistenti in coda e la porta non può essere impostata come non bloccante. La funzione accetta () appare con l'eccezione EAGAIN o EWOULLBLOCK quando l'installazione è configurata non bloccante e non ci sono richieste di attesa nella coda.

Esempio della funzione socket accet () nella lingua C in Ubuntu 20.04

Scriveremo il programma che dimostra che la funzione accetta () sta ritardando la chiamata.

Innanzitutto, importa alcuni file di intestazione richiesti. La libreria include l'uso di metodologie di input e output standard. indica diverse categorie di simboli e framework, si occupa delle funzionalità della presa. Quindi, specificare la variabile simboleggiata che verrà applicata come nodo di destinazione nei framework indicati alla funzione e tratta le diverse funzionalità della stringa. Successivamente, definiamo il backlog 3. Contiene tutti i fattori vitali necessari per produrre il design integrato.

Qui, chiamiamo la funzione principale (). All'interno del corpo della funzione principale (), inizializziamo alcune variabili utilizzate in questo programma. Dichiariamo il puntatore strutturale della variabile "Sockaddr_in my_addr". Per la creazione di una presa, utilizzeremo il metodo Socket (). Inoltre, abbiamo vinto con l'aiuto della funzione bind (). E assegnare il valore della funzione bind () alla variabile "b". Il metodo bind () contiene argomenti diversi. Abbiamo usato una condizione if-else nidificata in questo caso. Innanzitutto, definiamo la condizione dell'istruzione "if". Se il valore della variabile "B" è maggiore di 0, la funzione printf () stampa il testo "vincolato correttamente".

Altrimenti, la funzione printf () interrompe l'esecuzione del programma visualizzando il messaggio "errore di associazione". Ai fini dell'ascolto, la funzione Ascolta () si chiama. Inizializzamo una variabile "L" per archiviare il valore della funzione ascolt (). La funzione Ascolta () contiene due parametri. Ora, applichiamo la condizione sul valore dell'ascolto se il valore di "l" è maggiore di 0, il metodo printf () viene chiamato per mostrare il messaggio "ascolto". La funzione printf () mostra "non ascoltare" se la condizione particolare non viene soddisfatta.

Allo stesso modo, per accettare le richieste di sistema, abbiamo utilizzato la funzione accetta (). Ancora una volta per questa funzione, useremo la condizione if-else. Il valore della funzione accetta () è memorizzato nella variabile "ACC". Se il valore della variabile "ACC" sarà maggiore di 0, chiamiamo il metodo printf () per stampare la linea "accettata". Altrimenti, chiamiamo l'istruzione printf () per stampare "non accettato". Quindi, in questo modo, chiutreremo il codice.

Riceviamo questo tipo di output dopo l'esecuzione del codice precedente.

Conclusione

Abbiamo racchiuso la funzione di accettazione 2 C in dettaglio in questo articolo. La funzione accetta () viene chiamata per accettare le richieste di sistema. Dobbiamo importare librerie diverse prima di utilizzare la funzione accetta (). Questa funzione contiene parametri responsabili di varie funzionalità. Le chiamate di sistema forniscono un particolare identificatore di file per la porta ricevuta se vengono eseguite correttamente. Ma, in caso di errore, il codice mostra l'eccezione stampando -1. Quando viene richiesta una connessione di rete, viene inviato un segnale accessibile e gli utenti useranno quindi accetta () per ricevere una porta per questo tipo di connessione.