La presa collega la programmazione in C è definita come i due nodi su una rete in grado di connettersi e interagire tra loro. L'altro socket (nodo) raggiunge il primo socket per stabilire una connessione mentre il primo socket ascolta su una determinata porta su un IP. Una connessione socket funge da canale di comunicazione tra due parti per l'invio di messaggi. Scriveremo questa guida per migliorare significativamente la tua comprensione della connessione socket usando il paradigma di programmazione C. Invieremo messaggi tra il server e il client utilizzando il concetto di programmazione C in questa guida.
Esempio:
Gli esempi presentati in questa guida sono condotti su Ubuntu 20.04. Quindi, per fare questi esempi con Ubuntu 20.04, il compilatore GCC deve essere installato. Dopo aver installato il GCC, alcuni codici C vengono scritti per dimostrare l'uso di "Socket Connect". In questo esempio, creeremo due file di codice diversi, uno è il codice lato client e l'altro è il codice lato server. Colletteremo entrambi i file e invieremo messaggi tra loro.
Codice lato server
Utilizziamo l'editor di testo fornito con Ubuntu 20.04. Innanzitutto, aggiungiamo i diversi file di intestazione come mostrato nello screenshot. Questi file di intestazione sono essenziali per questo codice di connessione socket. Dopo questi file di intestazione, definiamo la porta "8080". Dopo questo, utilizziamo la funzione "main ()" e abbiamo le diverse variabili locali all'interno di questa funzione "main ()". Abbiamo creato un "buffer []" di dimensioni "1024" sotto queste variabili. Il buffer viene utilizzato qui per inviare e ricevere i dati.
Quindi, creiamo la presa all'interno dell'istruzione "if". In questa presa, diamo l'indirizzo IP come "AF_INET". Il tipo di connessione è "Sock_Stream" che viene passato qui come secondo parametro e passa il "0" come terzo parametro. Se la condizione data è soddisfatta, viene eseguita l'affermazione sotto questa istruzione "if" in cui inseriamo l'istruzione "Perror" che stampare l'errore sul terminale. Quindi, colleghiamo questa presa alla porta "8080".
Usiamo il "setSocketOpt". Ciò facilita la modifica dei parametri per la presa a cui si riferisce il descrittore di file Sockfd. Sebbene completamente facoltativo, questo promuove l'indirizzo e il riutilizzo della porta. Vengono evitati errori come "indirizzo già in uso". Dopo questo, specifichiamo l'indirizzo per la presa. È definito nel file di intestazione. Per il "indirizzo.sin_port ", utilizziamo gli" htons "che viene utilizzato per convertire il numero di porta in un ordine di byte host.
Quindi, abbiamo la funzione "bind ()" all'interno dell'istruzione "if". Questa funzione "bind ()" viene utilizzata per legare una presa a un indirizzo. Contiene tre parametri. Dopo questo, creiamo una variabile "ValRead" e mettiamo la fucnzione "read ()". Invece del descrittore di file iniziali fornito da socket, la chiamata di lettura utilizza il nuovo descrittore di file fornito dalla funzione "accetta ()". Abbiamo l'istruzione "printf" che viene utilizzata per visualizzare i dati. Quindi, utilizziamo la funzione "Send ()". Questa funzione viene utilizzata per inviare i dati sulle prese.
Quindi, abbiamo di nuovo l'istruzione "Printf" e la funzione "Close ()". Questo viene utilizzato per chiudere la presa e liberare tutte le risorse assegnate alla presa. La funzione "Shut Down ()" è anche qui per chiudere la connessione della presa. Alla fine, abbiamo una dichiarazione "return 0".
Codice lato client
Questo codice è simile al codice server precedente. Inseriamo i diversi file di intestazione necessari per questo codice. Quindi, dichiariamo la funzione "principale". All'interno di questa funzione "main ()", abbiamo varie variabili locali. Stabiliamo un "buffer []" di dimensioni "1024" dopo queste variabili. La trasmissione e la ricezione dei dati in questo caso utilizzano il buffer. Creiamo la presa all'interno dell'istruzione "if". L'indirizzo IP per questa presa è "AF Inet". Il tipo di connessione per questo socket è "Sock Stream" che viene fornito come secondo parametro e "0" come terzo parametro.
Dopo questo, specifichiamo gli indirizzi dopo la creazione della presa. Quindi, utilizziamo questo indirizzo all'interno dell'istruzione "if" e abbiamo l'istruzione "printf" qui. Il primo argomento che abbiamo è il "descrittore di file socket", il secondo argomento è l'indirizzo dell'host e il terzo argomento è la dimensione dell'indirizzo. Viene quindi utilizzata la funzione "Send ()". I dati inviati tramite le prese vengono inviati utilizzando questa funzione. La funzione Comando "Printf" e "Close ()" sono quindi presenti ancora una volta. Questo viene fatto per chiudere la presa e rilasciare tutte le risorse che sono assegnate.
Produzione:
Dato che ci si aspetta che eseguiamo due codici indipendenti, dobbiamo lanciare due terminali separati per raggiungere questo obiettivo. Il codice lato client viene eseguito su un terminale mentre il codice lato server viene eseguito sull'altro terminale. Nel primo terminale, inseriamo il seguente comando per compilare il nostro codice lato server:
Eseguendo il seguente comando nel secondo terminale, compiliamo il codice lato client allo stesso modo:
Eseguiamo entrambi i codici uno alla volta in cui vengono compilati. Tuttavia, poiché il codice lato server ha lo scopo di monitorare le richieste di connessione, dobbiamo eseguirlo prima. Il comando seguente può essere utilizzato per eseguire il codice lato server:
Successivamente, il seguente comando può essere utilizzato per eseguire il codice lato client:
Dopo aver usato contemporaneamente entrambi i comandi su entrambi i terminali, otteniamo questo output che viene mostrato di seguito:
Conclusione
Abbiamo presentato questa guida per aiutarti a capire la "presa di presa" nella programmazione C. Lo abbiamo spiegato in dettaglio e fornito esempi come output. Sarai in grado di inviare e ricevere efficacemente i dati tra un client e un server utilizzando le prese dopo aver esaminato l'esempio fornito in questa guida. Questo esempio funge solo da illustrazione semplice su come collegare le prese con la programmazione C e come vengono inviati i dati.