Programare C

Soclu POSIX cu programare C

Soclu POSIX cu programare C

Un socket POSIX sau pur și simplu un socket este definit ca un punct final de comunicare. De exemplu, dacă două părți, A și B, intenționează să comunice între ele, atunci va fi necesar ca ambele părți să stabilească o conexiune între punctele lor finale respective. O priză oferă părților care comunică un gateway prin care călătoresc mesajele. Dacă vorbim în termeni de client și server, atunci socket-ul de pe server va fi să asculte conexiunile primite, în timp ce socket-ul de pe client va fi responsabil pentru conectarea la socket-ul de pe server. Acest articol este destinat să facă conceptul de soclu POSIX cu programare C mult mai clar.

Exemplu de utilizare a socketului Posix cu programarea C în Linux Mint 20

Exemplul prezentat în această secțiune va demonstra o interacțiune între un client și un server. Clientul și serverul sunt cele două entități principale ale modelului client / server din lumea computerelor. În exemplul nostru, atât clientul, cât și serverul vor trimite și primi mesaje către și de la celălalt în timp ce utilizează POSIX Socket cu programare C în Linux Mint 20. Pentru a aduce claritate în înțelegerea codului, am separat codul din partea clientului și codul din partea serverului și vă vom explica ambele separat separat mai jos.

Codul de pe partea serverului

Pentru codul din partea serverului, am creat pur și simplu un document gol în Directorul principal al sistemului nostru Linux Mint 20 și l-am numit server.c. În acel document gol, trebuie să scrieți fragmentele de cod afișate în cele trei imagini de mai jos:

Codul afișat în imaginile de mai sus poate părea lung, totuși, să încercăm să-l înțelegem într-un mod extrem de ușor. În primul rând, am creat un soclu și l-am atașat cu numărul de port dorit, care în cazul nostru este 8080. Apoi am scris o funcție de ascultare, care este acolo pentru a căuta toate conexiunile primite de la clienți. Practic, clientul reușește să se conecteze la server doar datorită prezenței acestei funcții de ascultare. Și odată ce această conexiune este stabilită, serverul este setat să trimită și să primească date către și de la client.

Funcțiile de citire și trimitere servesc scopurilor de a primi și a trimite mesaje clienților, respectiv. Am definit deja un cod implicit în codul nostru pe care intenționăm să îl trimitem clientului nostru și care este „Bună ziua de la server”. După trimiterea acestui mesaj către client, acesta va fi afișat în partea clientului, în timp ce un mesaj care spune „Bună ziua a fost trimis” va fi afișat pe partea serverului. Aici este vorba despre codul nostru de pe server.

Codul parte client

Acum, pentru codul client, din nou, am creat un document gol în Directorul principal al sistemului nostru Linux Mint 20 și l-am numit client.c. În acel document gol, trebuie să scrieți fragmentele de cod afișate în cele două imagini de mai jos:

În codul din partea clientului prezentat în imaginile de mai sus, am creat un socket în același mod ca și pentru codul din partea serverului. Apoi, există o funcție de conectare care va încerca să facă o conexiune cu serverul prin portul specificat. Și odată ce această conexiune este acceptată de server, clientul și serverul vor fi setate să trimită și să primească mesaje către și de la celălalt.

Din nou, la fel ca codul din partea serverului, funcțiile de trimitere și citire sunt acolo pentru a trimite și primi mesaje de la server, respectiv. De asemenea, am menționat un mesaj implicit pe care dorim să îl trimitem la server și care este „Bună ziua de la client”. După trimiterea acestui mesaj către server, acest mesaj va fi afișat pe partea serverului, în timp ce pe partea clientului va fi afișat un mesaj care spune „Bună ziua mesajul trimis”. Și acest lucru ne aduce la sfârșitul explicației codului nostru din partea clientului.

Compilarea și rularea codurilor client și server

Evident, vom salva atât fișierele noastre client, cât și cele de pe server, după ce am scris aceste programe, apoi vom fi pregătiți să compilăm și să rulăm aceste coduri. Prin urmare, vom putea vizualiza interacțiunea dintre clientul nou creat și server. Pentru a atinge acest obiectiv, trebuie să lansăm două terminale diferite, deoarece ar trebui să rulăm două programe separate. Un terminal va fi dedicat executării codului de pe partea serverului, iar celălalt pentru codul de pe partea clientului.

Deci, pentru a compila codul nostru de pe server, vom executa următoarea comandă în primul terminal:

server $ gcc.server c -o

După executarea acestei comenzi, dacă nu vor exista erori în codul dvs. de pe server, atunci nimic nu va fi afișat pe terminal, ceea ce va fi o indicație a unei compilări reușite.

În același mod, vom compila codul din partea clientului cu comanda prezentată mai jos, executându-l în al doilea terminal:

client $ gcc.c -o client

Odată ce ambele coduri sunt compilate, le vom rula unul câte unul. Cu toate acestea, trebuie să rulăm mai întâi codul de pe server, deoarece acesta ar trebui să asculte cererile de conexiune. Codul de pe server poate fi rulat cu următoarea comandă:

$ ./Server

După rularea codului de pe server, putem rula codul de pe partea de client cu comanda prezentată mai jos:

$ ./client

Odată ce atât clientul, cât și serverul vor fi în funcțiune, veți fi martori la ieșirile afișate în următoarele imagini de pe ambele terminale:

Concluzie

Sperăm că, după ce ați parcurs exemplul împărtășit cu dvs. în acest articol, veți putea utiliza soclurile POSIX eficient pentru trimiterea și primirea de date între un client și un server. Acest exemplu este doar o demonstrație de bază a soclurilor Posix cu programare C, cu toate acestea, puteți chiar să faceți aceste programe mai complexe conform cerințelor dvs.

Middle mouse button not working in Windows 10
The middle mouse button helps you scroll through long webpages and screens with a lot of data. If that stops, well you will end up using the keyboard ...
How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...
Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...