要执行 XHR 请求,需要使用 C++ 中的网络编程库,如 Winsock 或 Boost.Asio。以下是使用 Winsock 库执行 XHR 请求的基本步骤:

  1. 初始化 Winsock 库

使用 WSAStartup() 函数初始化 Winsock 库。

  1. 创建套接字

使用 socket() 函数创建套接字。

  1. 连接到服务器

使用 connect() 函数连接到服务器。

  1. 发送 HTTP 请求

使用 send() 函数发送 HTTP 请求。

  1. 接收服务器响应

使用 recv() 函数接收服务器响应。

  1. 关闭套接字

使用 closesocket() 函数关闭套接字。

以下是一个简单的示例代码:

#include <iostream>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib") // 链接到 Winsock 库

int main() {
    // 初始化 Winsock 库
    WSADATA wsaData;
    int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (result != 0) {
        std::cout << "WSAStartup failed: " << result << std::endl;
        return 1;
    }

    // 创建套接字
    SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sock == INVALID_SOCKET) {
        std::cout << "socket failed: " << WSAGetLastError() << std::endl;
        WSACleanup();
        return 1;
    }

    // 连接到服务器
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(80);
    serverAddr.sin_addr.s_addr = inet_addr("192.0.2.1"); // 替换为实际服务器 IP 地址
    result = connect(sock, (sockaddr*)&serverAddr, sizeof(serverAddr));
    if (result == SOCKET_ERROR) {
        std::cout << "connect failed: " << WSAGetLastError() << std::endl;
        closesocket(sock);
        WSACleanup();
        return 1;
    }

    // 发送 HTTP 请求
    const char* httpRequest = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"; // 替换为实际 HTTP 请求
    result = send(sock, httpRequest, strlen(httpRequest), 0);
    if (result == SOCKET_ERROR) {
        std::cout << "send failed: " << WSAGetLastError() << std::endl;
        closesocket(sock);
        WSACleanup();
        return 1;
    }

    // 接收服务器响应
    char buffer[1024];
    result = recv(sock, buffer, sizeof(buffer), 0);
    if (result == SOCKET_ERROR) {
        std::cout << "recv failed: " << WSAGetLastError() << std::endl;
        closesocket(sock);
        WSACleanup();
        return 1;
    }
    buffer[result] = '\0';
    std::cout << buffer << std::endl;

    // 关闭套接字
    closesocket(sock);

    // 清理 Winsock 库
    WSACleanup();

    return 0;
}
C++ 使用 Winsock 库执行 XHR 请求

原文地址: https://www.cveoy.top/t/topic/kfAb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录