這里提供一個C語言使用HTTP請求代碼示例:文章來源:http://www.zghlxwxcb.cn/news/detail-514064.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define BUFFER_SIZE 4096
void send_request(int sock, char *host, char *path) {
? ? char request[BUFFER_SIZE];
? ? sprintf(request, "GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0\r\nConnection: close\r\n\r\n", path, host);
? ? send(sock, request, strlen(request), 0);
}
void recv_response(int sock) {
? ? char response[BUFFER_SIZE];
? ? int n;
? ? while ((n = recv(sock, response, BUFFER_SIZE - 1, 0)) > 0) {
? ? ? ? response[n] = '\0';
? ? ? ? printf("%s", response);
? ? }
}
int main(int argc, char *argv[]) {
? ? if (argc < 3) {
? ? ? ? printf("usage: %s host path\n", argv[0]);
? ? ? ? return -1;
? ? }
? ? char *host = argv[1];
? ? char *path = argv[2];
? ? struct sockaddr_in serv_addr;
? ? int sock = socket(AF_INET, SOCK_STREAM, 0);
? ? if (sock < 0) {
? ? ? ? perror("socket");
? ? ? ? return -1;
? ? }
? ? memset(&serv_addr, 0, sizeof(serv_addr));
? ? serv_addr.sin_family = AF_INET;
? ? serv_addr.sin_addr.s_addr = inet_addr(host);
? ? serv_addr.sin_port = htons(80);
? ? if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
? ? ? ? perror("connect");
? ? ? ? return -1;
? ? }
? ? send_request(sock, host, path);
? ? recv_response(sock);
? ? close(sock);
? ? return 0;
}
以上代碼實現(xiàn)了一個使用C語言發(fā)送HTTP GET請求的程序,需要通過命令行傳入目標主機的IP地址和請求路徑。程序中,首先創(chuàng)建一個TCP套接字并連接到目標主機的80端口,然后構造GET請求發(fā)送到目標主機,并接受目標主機返回的響應并輸出到終端。注意該程序中沒有使用HTTP協(xié)議的解析器,只是簡單地發(fā)送請求和接收響應。文章來源地址http://www.zghlxwxcb.cn/news/detail-514064.html
到了這里,關于C語言使用HTTP代碼示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!