Nykymaailmassa tietokoneverkoilla on tärkeä rooli tiedonsiirrossa. Se on aihe, joka jokaisen ohjelmoijan tulisi tietää. Tietokoneverkon alla socket-ohjelmointi on yksi ohjelmointimaailman tärkeimmistä aiheista. Tässä aiheessa käsittelemme socket-ohjelmointia ja erilaista socket-ohjelmointimenetelmää, joka on toteutettu C++:ssa.
C++:ssa socket-ohjelmointi on menetelmä, joka yhdistää kaksi tai useampia solmuja keskenään verkon yli, jotta solmut voivat jakaa tietoja ilman tietojen menetystä. Tässä yhteydessä yksi solmu kuuntelee yhtä porttia, joka on kytketty tiettyyn IP-osoitteeseen. Kun asiakas saavuttaa palvelimen, palvelin luo socket-kuuntelijan.
Mikä on pistorasia?
Ymmärretään pistorasiasta puhumalla reaaliaikainen esimerkki. Pistorasia on eräänlainen tietoväline, joka muodostaa yhteyden kahden laitteen välillä. Pistorasia voi olla joko puhelimen laturi, joka muodostaa yhteyden pistorasian ja puhelimen välillä tai puhelimen ja kannettavan tietokoneen välillä. Socketin avulla paikallisverkkoon liitetään erilaisia sovelluksia eri porteilla. Joka kerta kun socket luodaan, palvelin määrittää ohjelman, ja tämä ohjelma määrittää socketin ja toimialueen osoitteen.
sanjay dutt ja
Socket on eräänlainen mekanismi, jota käytetään tietojen vaihtamiseen eri prosessien välillä. Tässä nämä prosessit ovat joko eri laitteissa tai samassa laitteessa, jotka on kytketty verkon kautta. Kun yhteys pistorasiaan on luotu, tiedot voidaan lähettää molempiin suuntiin ja jatkaa, kunnes jokin päätepisteistä sulkee yhteyden.
Toimenpide asiakkaan ja palvelimen välisessä viestinnässä
On joitain menettelytapoja, joita meidän on noudatettava luodaksemme asiakas-palvelin-viestinnän. Nämä ovat seuraavat.
Server Socketin luomisen vaiheet
On olemassa joitakin vaiheita, joissa voimme luoda palvelimen socketin. Nämä ovat seuraavat.
Mikä on yhteys?
Yhteys on kahden koneen välinen suhde, jossa kaksi ohjelmistoa tunnetaan toisistaan. Nämä kaksi ohjelmistoa osaavat muodostaa yhteyden toisiinsa; toisin sanoen voimme sanoa, että nämä kaksi ohjelmistoa osaavat lähettää bittejä verkon yli. Socketin yhteys tarkoittaa, että kahden koneen pitäisi tietää kaikki tiedot keskenään, kuten puhelinnumero, IP-osoite ja TCP-portti.
yritä saada java kiinni
Socket on objektityyppi, joka on samanlainen kuin tiedosto, jonka avulla ohjelma voi hyväksyä saapuvan yhteyden ja lähettää tai vastaanottaa saapuvan yhteyden. Se on myös eräänlainen resurssi, joka on määritetty palvelimen prosessille.
Palvelin voi luoda socketin socket(:n) avulla. Tätä liitäntää ei voi jakaa minkään muun prosessorin kanssa.
Vaiheet asiakkaalle
- Vastake, jossa tiedot voidaan viestiä keskenään.
- Tallennuspuskuri voi tallentaa tietoja osoitteesta, kuten addr_of_data ja addr_of_buffer.
- Se käsittelee puskurin kokoa, kuten len_of_data ja len_of_buffer.
- Se käsittelee lippua, joka kertoo kuinka tiedot lähetetään.
Vaiheet yhteyden muodostamiseksi pistorasiaan
Se muodostaa yhteyden eri asiakkaiden ja palvelimen välille. Mutta sekä asiakas että palvelin voivat käsitellä socket-yhteyden. Jokaisen prosessin on muodostettava yhteys omalle pistorasialleen.
Asiakaspuolen pistorasiaan liittyvät vaiheet ovat seuraavat:
- Se luo socketin socket()-järjestelmäkutsun avulla.
- Sitten meidän on muodostettava yhteys palvelimen pistorasiaan system()-kutsun avulla.
- Sitten meidän on lähetettävä ja vastaanotettava tiedot. Voimme tehdä tämän monin eri tavoin. voimme tehdä tämän read()- ja write()-funktion.
Palvelinpuolen socketin perustamiseen liittyvät vaiheet ovat seuraavat:
10 prosenttia 60:stä
- Se luo ensin socketin socket()-järjestelmäkutsun avulla.
- Sitten se sitoo socketin osoitteeseen bind()-järjestelmäkutsun avulla. Osoite koostuu isäntäkoneen palvelinpistorasian portin numerosta.
- Sitten se kuuntelee yhteyttä kuuntelujärjestelmäkutsun () avulla.
- Sitten palvelin hyväksyy saapuvan yhteyden accept()-järjestelmäkutsun avulla. Se myös estää kaikki saapuvat komennot, kunnes asiakas on yhdistetty palvelimeen.
- Sitten alkaa tietojen lähetys- ja vastaanottoprosessi.
Useiden asiakkaiden yhdistäminen ilman monisäikeistystä
On olemassa useita esimerkkejä, joissa näemme, kuinka yksittäinen käyttäjä voi muodostaa yhteyden palvelimeen. Nykypäivän ohjelmointimaailmassa palvelimeen on kytketty useita käyttäjiä eri pistokkeilla.
On olemassa useita tapoja saavuttaa tämä. Yksi niistä on monisäikeinen. Monisäikeistyksen avulla voimme saavuttaa tämän. Voimme toteuttaa monisäikeisen prosessin select()-funktion avulla.
Esimerkki:
Koodi asiakkaalle:
// 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)>