Sobes.tech
Junior — Middle

Ar turite praktinės patirties dirbant su tinklo protokolais ir infrastruktūra?

sobes.tech AI

Atsakymas iš AI

Taip, praktinė patirtis su tinklo protokolais ir infrastruktūra apima supratimą ir naudojimą tokių protokolų kaip TCP/IP, UDP, HTTP, taip pat tinklo ryšių konfigūravimą ir klaidų šalinimą.

Pavyzdžiui, C/C++ galima naudoti lizdus (sockets) kuriant klientų-serverio programas:

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
#include <iostream>

int main() {
    int sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) {
        std::cerr << "Klaida kuriant lizdą" << std::endl;
        return 1;
    }

    sockaddr_in server_addr{};
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(80); // HTTP prievadas
    inet_pton(AF_INET, "93.184.216.34", &server_addr.sin_addr); // example.com

    if (connect(sock, (sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
        std::cerr << "Prisijungimo klaida" << std::endl;
        close(sock);
        return 1;
    }

    const char* http_request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n";
    send(sock, http_request, strlen(http_request), 0);

    char buffer[1024];
    int bytes_received = recv(sock, buffer, sizeof(buffer) - 1, 0);
    if (bytes_received > 0) {
        buffer[bytes_received] = '\0';
        std::cout << buffer << std::endl;
    }

    close(sock);
    return 0;
}

Ši patirtis padeda suprasti, kaip duomenys perduodami per tinklą, kaip yra nustatomos jungtys ir kaip tvarkyti klaidas.