logo

Programiranje vtičnic v C/C++

V današnjem svetu igrajo računalniška omrežja pomembno vlogo na področju prenosa podatkov. To je tema, ki bi jo moral poznati vsak programer. Pod računalniškim omrežjem je programiranje vtičnic ena najpomembnejših tem v svetu programiranja. V tej temi bomo razpravljali o programiranju vtičnic in drugačni metodi programiranja vtičnic, ki je implementirana v C++.

V C++ je programiranje vtičnic metoda, ki združuje dve ali več vozlišč med seboj prek omrežja, tako da lahko vozlišča delijo podatke brez izgube podatkov. V tej povezavi eno vozlišče posluša ena vrata, ki so povezana z določenim naslovom IP. Ko odjemalec doseže strežnik, strežnik ustvari poslušalca vtičnice.

Kaj je Socket?

Razumejmo vtičnico s primerom v realnem času. Vtičnica je vrsta medija, ki omogoča povezavo med dvema napravama. Vtičnica je lahko polnilnik za telefon, ki omogoča povezavo med vtičnico in telefonom ali telefonom in tem prenosnikom. S pomočjo vtičnice so različne aplikacije priključene na lokalno omrežje z različnimi vrati. Vsakič, ko je vtičnica ustvarjena, strežnik določi program, ta program pa poda vtičnico in naslov domene.

niz dolžine

Vtičnica je vrsta mehanizma, ki se uporablja za izmenjavo podatkov med različnimi procesi. Tukaj so ti procesi bodisi prisotni v različnih napravah ali isti napravi, ki sta povezani prek omrežja. Ko je povezava za vtičnico ustvarjena, se lahko podatki pošljejo v obe smeri in se nadaljujejo, dokler ena od končnih točk ne prekine povezave.

Programiranje vtičnic v C/C++

Postopek v komunikaciji med odjemalcem in strežnikom

Obstaja nekaj postopkov, ki jih moramo upoštevati, da vzpostavimo komunikacijo med odjemalcem in strežnikom. Te so naslednje.

    Vtičnica:S pomočjo vtičnice lahko ustvarimo novo komunikacijo.Vezava:S pomočjo tega lahko priključimo lokalni naslov na vtičnico.poslušaj:S to pomočjo; lahko sprejmemo povezavo.Sprejmi:S to pomočjo; lahko blokiramo dohodno povezavo, dokler ne prispe zahteva.Povežite se:S to pomočjo; lahko poskusimo vzpostaviti povezavo.Pošlji:S pomočjo tega; podatke lahko pošljemo po omrežju.Prejeti:S to pomočjo; podatke lahko prejemamo preko omrežja.Zapri:S pomočjo tega lahko sprostimo povezavo iz omrežja.

Faze za ustvarjanje strežniške vtičnice

Obstaja nekaj stopenj, po katerih lahko ustvarimo vtičnico za strežnik. Te so naslednje.

    int socketcr:Vtičnica (domena, vrsta, protokol)Socketcr:Je celoštevilski tip in je kot upravljalnik datotek.Domena:Je komunikacijska domena in je celoštevilskega tipa.Tip:Je vrsta komunikacije.SOCK_DGRAM:To je vrsta UDP, ki je nezanesljiva in brez povezave.Protokol:Uporablja se za dodelitev vrednosti protokola za naslov IP, ki je 0. Vrednost protokola je podobna vrednosti, prikazani v polju protokola v glavi IP žepa.

Kaj je povezava?

Povezava je vrsta razmerja med dvema strojema, kjer sta programski opremi znani druga o drugi. Ti dve programski opremi znata vzpostaviti medsebojno povezavo; z drugimi besedami, lahko rečemo, da ti dve programski opremi znata poslati bite po omrežju. Povezava vtičnice pomeni, da morata dva stroja poznati vse informacije med seboj, kot so telefonska številka, naslov IP in vrata TCP.

css komentar

Vtičnica je vrsta predmeta, ki je podoben datoteki, ki omogoča programu, da sprejme dohodno povezavo in mu omogoči pošiljanje ali prejemanje dohodne povezave. Poleg tega je to vrsta vira, dodeljenega procesu strežnika.

Strežnik lahko ustvari vtičnico s pomočjo socket(). Te vtičnice ni mogoče deliti z nobenim drugim procesorjem.

    Setsockopt:S pomočjo Setsockopta lahko manipuliramo z različnimi možnostmi vtičnice, na katere se sklicuje deskriptor datoteke vtičnice. Ta postopek je popolnoma neobvezen. S pomočjo Setsockopta lahko ponovno uporabimo vrata in naslove odjemalca in strežnika. Ko strežnik sporoči napako 'naslov je že v uporabi', lahko to preprečimo s pomočjo Setsockopta.Vezava:Vtičnico lahko povežemo z naslovom in vrati s pomočjo funkcije bind. Ta operacija se izvede po izdelavi vtičnice. Na primer, če poskušamo strežnik povezati z lokalnim gostiteljem, potem uporabimo INADDR_ANY za določitev naslova IP strežnika.poslušaj:Vtičnico načina povezave lahko naredimo s pomočjo funkcije poslušanja (). Primer vtičnice načina povezave je SOCK_STREAM. To lahko definirate z argumentom socket. To se uporablja za sprejemanje dohodne povezave, izvajanje operacije čakalne vrste za dohodno povezavo in izvajanje zaostanka dohodne povezave. Ko dohodna povezava od strežnika zahteva potrditev, se vtičnica postavi v pasivni način. Parameter zaostanka strežnika se nanaša na dejstvo, da ne more dovoliti več kot ene povezave s strežnikom hkrati. Če je prišla neka dohodna povezava in je čakalna vrsta polna, strežnik sporoči napako z navedbo ' ECONNREFUSED.' S pomočjo listen() je dohodna povezava na čakanju in ko je čakalna vrsta prazna, pokliče vse dohodne povezave na strežnik.Sprejmi:S pomočjo sistemskega klica accept(); lahko naredimo vtičnico na osnovi povezave. Nekatere vtičnice, ki temeljijo na povezavi, so SOCK_STREAM in SOCK_SEQPACKET. Izvleče vse dohodne povezave, ki pridejo prve, in omogoči, da njihova zahteva odide na strežnik. Na novo povezani seznam ne more poslušati s pomočjo drugega argumenta za ustvarjanje nove vtičnice.

Faze za stranko

    Priključek vtičnice:To je popolnoma enako kot metoda za ustvarjanje strežnika.Povežite se:Povezavo z vtičnico lahko sprožimo s pomočjo sistemskega klica connect(). Če je parameter za vtičnico vrste SOCK_DGRAM, lahko definiramo datagram kot trajen s pomočjo connect(). Če je vtičnica vrste SOCK_STREAM, potem lahko poskusimo vzpostaviti drugo povezavo za strežnik. S pomočjo funkcije connect() lahko ustvarimo tudi povezavo za tujo zvezo. Če vtičnica ni vezana, potem sistem dodeli enolično vrednost lokalni povezavi. Ko sistem uspešno zaključi klic, je vtičnica pripravljena za pošiljanje ali prejemanje katere koli vrste podatkov.Pošlji/prejmi:Funkciji send() in recv() lahko izvedeta spodnjo operacijo.
  • Vtičnica, na kateri se lahko podatki med seboj komunicirajo.
  • Medpomnilnik za shranjevanje lahko shrani podatke o naslovu, kot sta addr_of_data in addr_of_buffer.
  • Ukvarja se z velikostjo medpomnilnika, kot sta len_of_data in len_of_buffer.
  • Ukvarja se z zastavico, ki pove, kako bodo podatki poslani.

Koraki za vzpostavitev povezave v vtičnici

Vzpostavi povezavo med različnimi odjemalci in strežnikom. Toda tako odjemalec kot strežnik lahko upravljata povezavo vtičnice. Vsak proces mora vzpostaviti povezavo za svojo vtičnico.

Koraki, vključeni v vzpostavitev vtičnice na strani odjemalca, so naslednji:

  • Ustvari vtičnico s pomočjo sistemskega klica socket().
  • Nato se moramo povezati z naslovom vtičnice strežnika s pomočjo klica system().
  • Nato moramo poslati in prejeti podatke. To lahko storimo na različne načine. lahko naredimo to funkcijo read() in write().

Koraki za vzpostavitev vtičnice na strani strežnika so naslednji:

mamta kulkarni
  • Najprej ustvari vtičnico s pomočjo sistemskega klica socket().
  • Nato poveže vtičnico z naslovom s pomočjo sistemskega klica bind(). Naslov je sestavljen iz številke vrat za strežniško vtičnico v gostiteljskem računalniku.
  • Nato posluša povezavo s pomočjo sistemskega klica listening ().
  • Nato strežnik sprejme dohodno povezavo s pomočjo sistemskega klica accept(). Prav tako blokira vse dohodne ukaze, dokler se odjemalec ne poveže s strežnikom.
  • Nato se začne postopek pošiljanja in prejemanja podatkov.

Povezovanje več odjemalcev brez večnitnosti

Obstajajo različni primeri, v katerih vidimo, kako se lahko en sam uporabnik poveže s strežnikom. V današnjem svetu programiranja je več uporabnikov povezanih s strežnikom z različnimi vtičnicami.

To lahko dosežemo na različne načine. Eden od njih je večnitnost. S pomočjo večnitnosti lahko to dosežemo. Večnitnostni proces lahko izvedemo s pomočjo s pomočjo funkcije select().

primer:

Koda za naročnika:

 // Client side C/C++ program to demonstrate Socket // programming #include #include #include #include #include #define PORT 8080 int main(int argc, char const* argv[]) { int sock = 0, valread, client_fd; struct sockaddr_in serv_addr; char* hello = &apos;Hello from client&apos;; char buffer[1024] = { 0 }; if ((sock = socket(AF_INET, SOCK_STREAM, 0)) <0) 0 8080 { printf('
 socket creation error 
'); return -1; } serv_addr.sin_family="AF_INET;" serv_addr.sin_port="htons(PORT);" convert ipv4 and ipv6 addresses from text to binary form if (inet_pton(af_inet, '127.0.0.1', &serv_addr.sin_addr) <="0)" printf( '
invalid address not supported ((client_fd="connect(sock," (struct sockaddr*)&serv_addr, sizeof(serv_addr))) 0) printf('
connection failed send(sock, hello, strlen(hello), 0); printf('hello message sent
'); valread="read(sock," buffer, 1024); printf('%s
', buffer); closing the connected close(client_fd); 0; code for server: server side c c++ program demonstrate programming #include #define port int main(int argc, char const* argv[]) server_fd, new_socket, valread; struct sockaddr_in address; opt="1;" addrlen="sizeof(address);" buffer[1024]="{" }; char* hello="Hello from server" ; creating file descriptor ((server_fd="socket(AF_INET," sock_stream, 0)) perror('socket failed'); exit(exit_failure); forcefully attaching (setsockopt(server_fd, sol_socket, so_reuseaddr | so_reuseport, &opt, sizeof(opt))) perror('setsockopt'); address.sin_family="AF_INET;" address.sin_addr.s_addr="INADDR_ANY;" address.sin_port="htons(PORT);" (bind(server_fd, sockaddr*)&address, sizeof(address)) perror('bind (listen(server_fd, 3) perror('listen'); ((new_socket="accept(server_fd," (socklen_t*)&addrlen)) perror('accept'); send(new_socket, close(new_socket); listening shutdown(server_fd, shut_rdwr); pre> <p> <strong>Compiling:</strong> </p> <img src="//techcodeview.com/img/c-tutorial/33/socket-programming-c-c-2.webp" alt="Socket Programming in C/C++"> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/c-tutorial/33/socket-programming-c-c-3.webp" alt="Socket Programming in C/C++"> <h2>Uses of Socket Programming</h2> <p>Socket programs are used to communicate between various processes, usually running on different systems. It is mostly used to create a client-server environment. This post provides the various functions used to create the server and client program and an example program.</p> <p>In the example, the client program sends a file name to the server, and the server sends the contents of the file back to the client. Socket programming usually pertains to basic communication protocols like TCP/UDP and raw sockets like ICMP. These protocols have a small communication overhead when compared to underlying protocols such as HTTP/DHCP/SMTP etc.</p> <p> <strong>Some of the basic data communications between the client and server are:</strong> </p> <ul> <li>File Transfer: Sends name and gets a file.</li> <li>Web Page: Sends URL and gets a page.</li> <li>Echo: Sends a message and gets it back.</li> </ul> <h2>Disadvantages</h2> <ul> <li>C++ can establish communication only with the machine requested and not with any other machine on the network.</li> <li>Sockets allow only raw data to be sent. This means that the client and server need mechanisms to interpret the data.</li> </ul> <hr></0)>