html,,,,,连接网站,,,点击这里访问示例网站,,,
“
1、安装libcurl库
在Ubuntu系统下,可以使用以下命令安装libcurl开发库:
sudo apt-get install libcurl4-openssl-dev
2、示例代码
#include <stdio.h> #include <curl/curl.h> // 回调函数,用于处理从网站获取的数据 size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written = fwrite(ptr, size, nmemb, stream); return written; } int main() { CURL *curl; FILE *fp; CURLcode res; // 初始化libcurl curl = curl_easy_init(); if (curl) { // 打开文件用于保存获取的网页内容 fp = fopen("output.html", "wb"); if (fp == NULL) { perror("Failed to open file"); return 1; } // 设置libcurl选项,指定要连接的网站URL和写数据的回调函数等 curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // 执行请求并获取结果 res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s ", curl_easy_strerror(res)); } // 清理工作 fclose(fp); curl_easy_cleanup(curl); } return 0; }
上述代码中,首先初始化libcurl库,然后设置要连接的网站URL为http://www.example.com
,通过curl_easy_setopt
函数设置相关选项,如写数据的回调函数write_data
以及将数据写入的文件指针fp
,最后执行请求,并根据返回结果进行相应处理。
二、使用socket编程连接网站(以HTTP协议为例)
1、示例代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #define SERVER_PORT 80 #define BUFFER_SIZE 1024 int main() { int sockfd; struct sockaddr_in server_addr; char buffer[BUFFER_SIZE]; char request[] = "GET / HTTP/1.1 Host: www.example.com Connection: close "; int n; // 创建套接字 sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("Socket creation failed"); exit(EXIT_FAILURE); } // 设置服务器地址结构体 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); inet_pton(AF_INET, "93.184.216.34", &server_addr.sin_addr); // www.example.com的IP地址 // 连接到服务器 if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { perror("Connect failed"); close(sockfd); exit(EXIT_FAILURE); } // 发送HTTP请求 send(sockfd, request, strlen(request), 0); // 接收服务器响应 while ((n = recv(sockfd, buffer, BUFFER_SIZE 1, 0)) > 0) { buffer[n] = '