C Programmeren

POSIX-aansluiting met C-programmering

POSIX-aansluiting met C-programmering

Een POSIX Socket of gewoon een Socket wordt gedefinieerd als een communicatie-eindpunt. Als twee partijen, A en B, bijvoorbeeld van plan zijn met elkaar te communiceren, is het vereist dat beide partijen een verbinding tot stand brengen tussen hun respectieve eindpunten. Een socket biedt de communicerende partijen een gateway waardoor de berichten reizen messages. Als we het hebben over de client en de server, dan is de taak van de server-side socket om te luisteren naar de inkomende verbindingen, terwijl de client-side socket verantwoordelijk is voor het verbinden met de server-side socket. Dit artikel is bedoeld om het concept van POSIX-socket met C-programmering veel duidelijker te maken.

Voorbeeld van het gebruik van Posix Socket met C-programmering in Linux Mint 20

Het voorbeeld dat u in deze sectie wordt gepresenteerd, demonstreert een interactie tussen een client en een server. De client en de server zijn de twee belangrijkste entiteiten van het client/server-model in de computerwereld. In ons voorbeeld zullen zowel de client als de server berichten van en naar elkaar verzenden en ontvangen terwijl ze gebruik maken van de POSIX Socket met C-programmering in Linux Mint 20. Om duidelijkheid te scheppen in het begrip van de code, hebben we de code aan de clientzijde en de code aan de serverzijde gescheiden en zullen we beide hieronder afzonderlijk aan u uitleggen.

De server-side code

Voor de code aan de serverzijde hebben we eenvoudig een leeg document in de Home Directory van ons Linux Mint 20-systeem gemaakt en het server genoemd.c. In dat lege document moet je de codefragmenten schrijven die in de drie onderstaande afbeeldingen worden getoond:

De code die in de bovenstaande afbeeldingen wordt weergegeven, lijkt misschien lang, maar laten we proberen het op een uiterst eenvoudige manier te begrijpen. Allereerst hebben we een socket gemaakt en deze bevestigd met het gewenste poortnummer, dat in ons geval 8080 . is. Vervolgens hebben we een luisterfunctie geschreven, die er is om te zoeken naar alle inkomende verbindingen van de clients. Kortom, de client slaagt erin om verbinding te maken met de server alleen vanwege de aanwezigheid van deze luisterfunctie. En zodra deze verbinding tot stand is gebracht, is de server helemaal klaar om gegevens van en naar de client te verzenden en te ontvangen.

De lees- en verzendfuncties dienen respectievelijk voor het ontvangen en verzenden van berichten naar de clients. We hebben al een standaardbericht in onze code gedefinieerd dat we onze klant willen sturen, en dat is "Hallo van server". Nadat dit bericht naar de client is verzonden, wordt het weergegeven aan de kant van de klant, terwijl een bericht met de tekst "Hallo bericht verzonden" aan de kant van de server wordt weergegeven. Dit gaat allemaal over onze server-side code.

De code aan de clientzijde

Nu, voor de code aan de clientzijde, hebben we opnieuw een leeg document in de Home Directory van ons Linux Mint 20-systeem gemaakt en het client genoemd.c. In dat lege document moet je de codefragmenten schrijven die in de twee onderstaande afbeeldingen worden getoond:

In de code aan de clientzijde die in de bovenstaande afbeeldingen wordt getoond, hebben we op dezelfde manier een socket gemaakt als voor de code aan de serverzijde. Dan is er een verbindingsfunctie die zal proberen verbinding te maken met de server via de opgegeven poort. En zodra deze verbinding door de server is geaccepteerd, zijn de client en de server helemaal klaar om berichten van en naar elkaar te verzenden en te ontvangen.

Nogmaals, net als de code aan de serverzijde, zijn de verzend- en leesfuncties er om respectievelijk berichten van de server te verzenden en te ontvangen. We hebben ook een standaardbericht genoemd dat we naar de server willen sturen, en dat is "Hallo van cliënt". Nadat dit bericht naar de server is verzonden, wordt dit bericht weergegeven aan de kant van de server, terwijl een bericht met de tekst "Hallo bericht verzonden" aan de kant van de klant wordt weergegeven. En dit brengt ons bij het einde van de uitleg van onze client-side code.

De client- en servercodes compileren en uitvoeren

Het is duidelijk dat we zowel onze client- als server-side bestanden zullen opslaan na het schrijven van deze programma's, dan zijn we helemaal klaar om deze codes te compileren en uit te voeren. Daarom kunnen we de interactie tussen onze nieuw gecreëerde client en server visualiseren. Om dit doel te bereiken, moeten we twee verschillende terminals lanceren, aangezien we verondersteld worden twee aparte programma's te draaien. Eén terminal is bestemd voor het uitvoeren van de code aan de serverzijde en de andere voor de code aan de clientzijde.

Dus, voor het compileren van onze server-side code, zullen we de volgende opdracht in de eerste terminal uitvoeren:

$ gcc-server.c -o server

Als er na het uitvoeren van deze opdracht geen fouten in uw servercode zijn, wordt er niets weergegeven op de terminal, wat een indicatie is van een succesvolle compilatie.

Op dezelfde manier zullen we de code aan de clientzijde compileren met de onderstaande opdracht door deze in de tweede terminal uit te voeren:

$ gcc-client.c -o klant

Zodra beide codes zijn gecompileerd, zullen we ze één voor één uitvoeren. We moeten echter eerst de code aan de serverzijde uitvoeren, omdat deze naar de verbindingsverzoeken moet luisteren. De server-side code kan worden uitgevoerd met de volgende opdracht:

$ ./server

Na het uitvoeren van de code aan de serverzijde, kunnen we de code aan de clientzijde uitvoeren met de onderstaande opdracht:

$ ./cliënt

Zodra zowel de client als de server actief zijn, ziet u de outputs die in de volgende afbeeldingen op beide terminals worden getoond:

Conclusie

Hopelijk kunt u, nadat u het voorbeeld dat met u in dit artikel is gedeeld doorgenomen hebt, de POSIX-sockets efficiënt gebruiken voor het verzenden en ontvangen van gegevens tussen een client en server. Dit voorbeeld is slechts een basisdemonstratie van de Posix-sockets met C-programmering, maar u kunt deze programma's zelfs complexer maken volgens uw vereisten.

Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...
Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...