Posix Socket i C

Posix Socket i C

Innenfor stikkprogrammering må vi ha to noder, jeg.e., klient og en server. Et sluttpunkt for overføring er kjent som en POSIX -stikkontakt eller bare en stikkontakt. For avsender og mottaker, A og B, for å samhandle med hverandre, må begge disse sidene først lage en lenke på tvers av sine spesielle sluttpunkter. En annen stikkontakt (endepunkt) søker den første kontakten som genererer en lenke, mens den første kontakten svarer på en viss port på en IP -adresse. Mens klienten nærmer seg serveren, genererer serveren lytterens kontakt. I denne guiden vil vi forklare bruken av sokkelfunksjonen fra POSIX -biblioteket til C mens du bruker Ubuntu 20.04 Linux operativsystem.

Server side:

Å skrive klient og serverkode er nødvendig for sokkelprogrammering. En enkelt node eller server kan ha flere klienter koblet til den. De nødvendige overskriftsfilene som skal brukes mens programmeringsstikkene er inkludert i de åtte første linjene. Ved å sette verdien til 8080, definerer vi Port Global Variable. Hvis port 8080 ikke er tilgjengelig, kan vi bytte den til en hvilken som helst annen port som er.

Vi erklærer noen få variabler av heltallstype i hovedmetoden som vi bruker senere. Disse variablene inkluderer de for serverfilbeskrivelsen (server_file_desc), den nye kontakten (new_socket), og verdien eller meldingen som er lest fra klienten (Value_read). Adressene for internettadressefamilien er lagret i en struktur av typen sockaddr, som er erklært i linjen etter.

Senere definerte vi alternativ = 1, adresse lengde = størrelse av (socket_address) og buffer [1024], som opprinnelig ble satt til 0 og ble brukt til meldinger hentet fra klienter i en størrelse på 1024 byte. Meldingsvariabelen, som lagrer meldingen som er sendt av serveren til klientene som er koblet til den, kommer neste. I neste linje lager vi en stikkontakt og passerer den AF_inet (adressefamilien kjent som AF inet brukes til å spesifisere hvilke typer adresser som kontakten din kan koble til (i dette tilfellet, IP (Internet Protocol) V4/V6 -adresser ).

TCP er en overføringskommunikasjonsprotokoll som er en tilkoblingsbasert protokoll. Når forbindelsen er etablert mellom to parter (klient-server), starter kommunikasjonen til forbindelsen er avsluttet eller avbrutt av en av de to partene eller av en eller annen type nettverkstilkoblingsfeil. Her er snapen til serverens sidekode skrevet på serveren.C -fil.

Nå fester vi kraftig kontakten til port 8080. Etter det initialiserer vi sokkelfamilien, adresse og port. Etter det binder vi sokkeladressen til port 8080. Nå er serveren klar til å lytte til enhver forbindelse fra klienten. Så vi skriver ut en melding før lyttingsmetoden. Når noen klient kobles til serveren ved hjelp av denne porten, vil serveren godta klientforbindelsen.

Hvis klienten og serveren er tilkoblet, vil serveren lese meldingen fra klienten ved hjelp av en buffer og vise den på terminalskjermen. Tilsvarende så langt som hvordan klienter får meldinger fra servere, send metoder for å overføre en melding og sokkelinformasjon til klienter. Serveren viser deretter en suksessmelding før den kutter av kommunikasjonen med den tilhørende kontakten. Serveren lukket også lyttingssokkelporten på serveren.

Klient side:

Bildet nedenfor viser klienten.C Filkodeutdrag:

Klienten kobles til serveren ved hjelp av en stikkontakt ved hjelp av Connect () -metoden, og vi har også passert serveradressen. Klienten og serveren kan kommunisere når tilkoblingen er etablert effektivt. Vis en feilmelding på terminalskjermen hvis serveren er nede eller klienten ikke kan koble til av noen annen grunn. Etter en vellykket tilkobling, vil klienten bruke en stikkontakt for å sende en melding til serveren, lese meldingen fra serveren ved hjelp av en buffer i verdien Lesvariabelen og vise serverens svar på skjermen. Klienten slår av kommunikasjonen med den koblede kontakten.

Vi har samlet serveren.C og klient.C -filer som bruker GCC -kompilatoren, og vi har lagret resultatene i serveren.C og klient.C -mapper. Kommandoene for å kompilere server- og klientfilene er listet opp nedenfor.

Vi trengte to forskjellige terminaler, en for serveren og en for klienten, for å se kommunikasjonen mellom dem. Trykk CTRL+SHIFT+N for å starte en ny terminal i Ubuntu. En ting du må huske på er at serveren må være aktiv og vente på en forbindelse fra klienten. Vil du motta feil. SNAP nedenfor viser denne feilen:

Når vi kjører serverutgangsfilen, vil serveren vente på at klienten skal koble seg til før de to kan kommunisere. Bare skriv inn ./Server på den nyåpnede terminalen for å starte serveren. Her er et skjermbilde som viser at serveren er i gang og klar til å akseptere tilkoblinger fra klienter:

Det er på tide å starte klienten akkurat nå. For å sette i gang kommunikasjon mellom klienten og serveren, skriv "/klient" på en ny terminal. Serveren svarer deretter og sender en melding, som klienten leser, lagrer i en meldingsvariabel, og vises ved hjelp av en Printf -setning. Klientens melding ble vist på terminalskjermen nedenfor.

Når en klient knytter seg til en server, godtar serveren en melding for å bekrefte tilkoblingen. Klientens melding vises derfor på skjermen nedenfor. Etter det vil serveren varsle klienten og vise en suksessmelding. Etter denne vellykkede kommunikasjonen avslutter eller avbryter serveren forbindelsen med klienten.

Konklusjon:

Vi er ferdige med nok forklaringer og demonstrasjoner av sokkelprogrammering på klienten og serversiden ved å bruke POSIX-biblioteket på C-språket. Vi har kort forklart både kodesidene for sokkelprogrammering og håper at du vil lære av eksemplene.