用c语言怎么向网址gat请求举例的代码加注释
以下是一个简单的通过 C 语言向网址发送 GET 请求的示例代码,注释已经加上:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h>
int main(int argc, char *argv[]) {
char *host = "www.example.com"; // 目标网址
char *path = "/"; // 请求的路径
int port = 80; // 目标端口号
struct sockaddr_in server;
struct hostent *hp;
char message[1024] = {0};
int sock, bytes_sent, bytes_recv;
char server_reply[4096] = {0};
// 创建套接字
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == -1) {
printf("Could not create socket");
return 1;
}
// 获取目标 IP 地址
hp = gethostbyname(host);
if (hp == NULL) {
printf("Could not resolve hostname");
return 1;
}
// 设置目标服务器的地址信息
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
server.sin_port = htons(port);
// 连接目标服务器
if (connect(sock, (struct sockaddr *)&server, sizeof(server)) < 0) {
printf("Connect error");
return 1;
}
// 构造 GET 请求消息
sprintf(message, "GET %s HTTP/1.1\r\nHost: %s\r\n\r\n", path, host);
// 发送 GET 请求消息
bytes_sent = send(sock, message, strlen(message), 0);
if (bytes_sent < 0) {
printf("Send failed");
return 1;
}
// 接收服务器响应消息
bytes_recv = recv(sock, server_reply, sizeof(server_reply), 0);
if (bytes_recv < 0) {
printf("Recv failed");
return 1;
}
// 输出服务器响应消息
printf("%s", server_reply);
// 关闭套接字
close(sock);
return 0;
}
这段代码会向 www.example.com 发送一个 GET 请求,并打印出服务器的响应消息。其中:
socket()函数用于创建套接字。gethostbyname()函数用于获取目标 IP 地址。connect()函数用于连接目标服务器。send()函数用于发送请求消息。recv()函数用于接收响应消息。close()函数用于关闭套接字。
原文地址: https://www.cveoy.top/t/topic/M8y 著作权归作者所有。请勿转载和采集!