C getsockname dell'utilizzo della funzione

C getsockname dell'utilizzo della funzione
La programmazione di socket è ben nota e comune nella programmazione C tra sviluppatori e utenti. All'interno di questo tipo di programmazione, tendiamo a collegare due endpoint. Questi endpoint possono essere due server, un server, una presa, ecc. Come suggerisce il nome, la funzione "GetSockName" viene utilizzata per far funzionare il nome di una presa nella rete. Può o meno essere il nome della presa, ma l'indirizzo di quella particolare presa verrebbe visualizzato utilizzando questa funzione. Pertanto, abbiamo provato un metodo semplice per illustrare la funzione getSockName () in C all'interno di questa guida. Diamo uno sguardo nuovo al suo esempio mentre lavori al programma usando Ubuntu 20.04 Sistema Linux.

Esempio: funzione getchockname

Diamo un'occhiata all'esempio della funzione GetSockName in C. Utilizza il collegamento chiave "Ctrl+Alt+T" per aprire rapidamente l'applicazione della riga di comando sullo schermo. Potrebbero essere necessari solo 10 secondi e il tuo terminale sarà pronto per l'uso. All'interno dell'area di istruzione del terminale, è necessario digitare la query "Touch" insieme al "nome file" per generare un file completamente nuovo nel tuo sistema, i.e., vuoto. Sono disponibili molte opzioni per aprire questo file appena generato, i.e., Vim, Nano o editore di testo. Gli utenti potrebbero preferire aprirlo prima dell'editor di testo, creare un codice, aggiornare o modificare il codice e quindi eseguire all'interno della shell. Ciò potrebbe essere fatto semplicemente toccando il doppio sul nome del file residente nella cartella "Home" di File Explorer. Se gli utenti desiderano aprire il file vuoto all'interno dell'editor "GNU Nano", possono utilizzare il comando "nano" del terminale. Scrivi questa istruzione e premi Invio per eseguirla. Sono elencate entrambe le istruzioni per la creazione e l'apertura dei file:

Il codice C inizia con l'inclusione di alcuni dei file di intestazione principale e importante. La parola chiave "include" viene utilizzata con il segno hash per farlo. Un totale di 11 intestazioni vengono utilizzate qui. Lo "stdio.H "è stato utilizzato per ottenere l'ingresso e l'output standard. Il "unistd.H". viene utilizzato per accedere all'API del sistema operativo Posix, i.e., Sistemi Linux e simili a unix. Il "stdlib.L'intestazione h "è una libreria standard per scopi generali, i.e., Digitare conversioni, gestione dei processi, allocazioni di archiviazione, ecc. Il "errno.h "è utilizzato principalmente per problemi di errore e reporting. La stringa.Il modulo H "per C viene utilizzato per gestire le stringhe insieme ad alcune delle altre funzioni. Il "sistema/tipi.L'intestazione h "viene utilizzata per definire i tipi di dati delle variabili e le funzioni utilizzate nel nostro codice di programma.

Il file di intestazione “sys/stat.h "viene utilizzato qui per descrivere la costruzione dei dati informativi restituiti. La libreria di intestazione “Sys/Socket.H ”verrà utilizzato per utilizzare le funzioni e mutabile le prese nel nostro codice. Il "sys/un.La libreria di intestazione h "è qui per salvare gli indirizzi delle prese simili a Unix. Il "netint/in.H "è appositamente progettato per inizializzare il tipo di struttura mutabile per l'indirizzo IPv6 in loopback.

Le variabili Inet Addrstrlen o Inet6 Addrstrlen di solito sono definite in “ARPA/INET.Biblioteca di intestazione h ". Dopo tutti i file di intestazione, abbiamo implementato una funzione definita dall'utente denominata "ShowerRor", prendendo una discussione del puntatore del personaggio costante "E". Questo argomento puntatore fa riferimento ad alcuni errori trovati finora nel nostro codice. Per il linguaggio di programmazione C, il metodo di errore POSIX, i.e., Perror, viene utilizzato per visualizzare un messaggio di risposta all'errore a "Stderr" a seconda di una condizione di errore ERRNO. Emette "STR" e un messaggio di risposta all'errore conforme all'errno mutabile universale, come determinato dal codice del programma. La funzione "Perror" utilizza l'argomento "E" come messaggio di errore per mostrarlo. La funzione "Exit (1)" è qui per uscire o terminare la funzione "ShowerRor ()" proprio al momento:

Ecco che arriva la funzione "Sock_addr" del tipo di punta che assume tre argomenti nei suoi parametri. Il parametro “S” rappresenta la presa e la variabile del puntatore del tipo di carattere “BUF” verrà utilizzata per archiviare i dati socket in esso. Mentre l'ultimo argomento "bufsize" del tipo "size_t" dell'oggetto verrà utilizzato per definire la dimensione di una variabile buffer o semplicemente buffer. All'interno di questa funzione, abbiamo creato una struttura denominata "ADDR" per archiviare l'indirizzo socket. La lunghezza della variabile "ADDR" è stata memorizzata all'interno della variabile tipo intero "len" applicando la funzione "sizeof" su di essa.

La funzione getSockname () è stata utilizzata qui per acquisire il nome di una presa. Questa funzione utilizza la presa, gli indirizzi socket e la lunghezza della presa come argomenti di input. Qualunque sia la risposta per la funzione GetSockName, la risposta verrà memorizzata nella variabile "Z", i.e., raccolto o no. L'istruzione "if" è qui per verificare la condizione che la variabile "z" ha ricevuto il codice di stato di ritorno come -1, i.e., falso. Significa, se non ti trovi incapace di ottenere il nome di una presa, tornerà NULL alla funzione chiamante. La funzione "snprintf" viene utilizzata per ottenere l'indirizzo del socket, convertirlo in forma di stringa e visualizzarlo sulla shell. Per questo, la dimensione del buffer e del buffer deve essere usata come argomento. L'indirizzo della porta socket viene utilizzato nella funzione "NTOHS" per convertirlo in codice byte host:

La funzione principale () prende 4 argomenti nel suo parametro. L'indirizzo del tipo di struttura variabile "ADDR" per una presa viene dichiarato con la variabile tipo di carattere "buf" della dimensione 64. Quindi, abbiamo creato una presa Internet IPv4 utilizzando la funzione socket. Questo stato socket restituisce il codice e verrà salvato nella variabile "SCK_INET". Se il socket non crea correttamente, come SCK_INET non è uguale a zero, chiamerà il messaggio "ShowerRor" mentre lo passerà un semplice testo "Socket ()".

Dopo questo, abbiamo provato a creare un indirizzo "AF_INET". La funzione Memset () viene utilizzata per inizializzare l'indirizzo per una presa su 0. La famiglia dell'indirizzo socket è stata inizializzata come "AF_inet", la sua porta è anche dichiarata mentre la funzione Htons è qui per tradurre il formato byte host in formato byte di rete. La funzione INET_ATON utilizza l'indirizzo IP locale per convertirlo nel formato stringa standard e salvarlo nella variabile dell'indirizzo socket. La dimensione della variabile dell'indirizzo è memorizzata nella variabile "len". La funzione bind () lega l'indirizzo al socket e salva il codice di ritorno di stato in "z". Se il codice di stato è "-1", i.e., Falso, chiamerà il messaggio "doccia" mentre chiamerà la funzione bind (). Se la funzione "Sock_addr ()" non è in grado di essere chiamata, chiamerà anche la funzione "ShowerRor" che prende "Sock_addr" come argomento. L'istruzione Printf mostra il nome memorizzato in un buffer:

La funzione di chiusura viene chiamata per chiudere la presa Internet IPv4:

Dopo la compilazione e l'esecuzione, abbiamo il nome socket su cui è collegato il nostro sistema:

Conclusione:

Questo articolo è davvero la necessità di ogni utente C cercando con impazienza l'esempio di "GetSockName" in Linux. Abbiamo discusso di un singolo esempio in questa guida. Abbiamo cercato di semplificare per i nostri utenti poiché il codice è stato diviso in blocchi. Speriamo che troverai questo articolo molto utile. Dai un'occhiata ad altri articoli di suggerimento Linux per ulteriori suggerimenti e tutorial.