C++ 使用 Winsock 库执行 XHR 请求
要执行 XHR 请求,需要使用 C++ 中的网络编程库,如 Winsock 或 Boost.Asio。以下是使用 Winsock 库执行 XHR 请求的基本步骤:
- 初始化 Winsock 库
使用 WSAStartup() 函数初始化 Winsock 库。
- 创建套接字
使用 socket() 函数创建套接字。
- 连接到服务器
使用 connect() 函数连接到服务器。
- 发送 HTTP 请求
使用 send() 函数发送 HTTP 请求。
- 接收服务器响应
使用 recv() 函数接收服务器响应。
- 关闭套接字
使用 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;
}
原文地址: https://www.cveoy.top/t/topic/kfAb 著作权归作者所有。请勿转载和采集!