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.
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.
Faze za ustvarjanje strežniške vtičnice
Obstaja nekaj stopenj, po katerih lahko ustvarimo vtičnico za strežnik. Te so naslednje.
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.
Faze za stranko
- 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 = 'Hello from client'; 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)>