Lập trình mạng trong C++ – Phần 17

Đăng ngày: 20/06/2026 • Tác giả: Quản trị viên
Lập trình mạng trong C++ – Phần 17

Lập trình mạng trong C++

1. Giới thiệu

Lập trình mạng giúp các ứng dụng giao tiếp với nhau qua mạng máy tính. C++ hỗ trợ lập trình mạng thông qua thư viện socket hoặc sử dụng thư viện Boost.Asio.

2. Sockets trong C++

Sockets là giao diện để truyền dữ liệu giữa các thiết bị qua mạng.

3. Tạo máy chủ TCP

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

using namespace std;

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int addrlen = sizeof(address);
    char buffer[1024] = {0};

    server_fd = socket(AF_INET, SOCK_STREAM, 0);
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(8080);

    bind(server_fd, (struct sockaddr*)&address, sizeof(address));
    listen(server_fd, 3);

    new_socket = accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen);
    read(new_socket, buffer, 1024);
    cout << "Nhận dữ liệu: " << buffer << endl;
    close(server_fd);
    return 0;
}

4. Tạo máy khách TCP

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

using namespace std;

int main() {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char message[] = "Hello, server!";

    sock = socket(AF_INET, SOCK_STREAM, 0);
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(8080);
    inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);

    connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
    send(sock, message, strlen(message), 0);
    close(sock);
    return 0;
}

5. Lập trình mạng với Boost.Asio

Boost.Asio giúp đơn giản hóa lập trình mạng trong C++.

5.1. Máy chủ với Boost.Asio

#include <iostream>
#include <boost/asio.hpp>

using namespace boost::asio;
using ip::tcp;

int main() {
    io_service io;
    tcp::acceptor acceptor(io, tcp::endpoint(tcp::v4(), 8080));
    tcp::socket socket(io);
    acceptor.accept(socket);
    std::string message = "Hello, Client!";
    write(socket, buffer(message));
    return 0;
}

5.2. Máy khách với Boost.Asio

#include <iostream>
#include <boost/asio.hpp>

using namespace boost::asio;
using ip::tcp;

int main() {
    io_service io;
    tcp::socket socket(io);
    socket.connect(tcp::endpoint(ip::address::from_string("127.0.0.1"), 8080));
    boost::asio::streambuf buffer;
    read_until(socket, buffer, "\n");
    std::cout << "Nhận dữ liệu: " << &buffer;
    return 0;
}

6. Kết luận

Lập trình mạng trong C++ giúp xây dựng ứng dụng client-server. Trong bài tiếp theo, chúng ta sẽ tìm hiểu về quản lý bộ nhớ trong C++.

Bài viết liên quan