如何使用c++;? 我希望能够向我的网站发送我的C++应用程序正在运行的信号。 到目前为止,我所做的是使用libcurl与我网站上的一个PHP文件联系,并提供一些get参数。 这是C++代码: curl_global_init(CURL_GLOBAL_ALL); CURL * handle = curl_easy_init(); CURLcode result; std::string url, contents; std::cin >> url; curl_easy_setopt(handle, CURLOPT_URL, url); curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, &errorBuf[0]); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writefunc); curl_easy_setopt(handle, CURLOPT_WRITEDATA, &contents); while(true) { time_t startOfLoop = time(0); //Ping page result = curl_easy_perform(handle); if(result == 0) std::cout << "[" << time(0) << "]: Pinged \"" << url << "\" ok!\r\n"; else { std::cout << "[" << time(0) << "]: Pinged \"" << url << "\" **ERROR: " << errorBuf << " [Error Code: " << result << "]\r\n"; } //Pause until 5 seconds has passed while(difftime(time(0), startOfLoop) < 5) {} } curl_easy_cleanup(handle); curl\u global\u init(curl\u global\u ALL); CURL*handle=CURL\u easy\u init(); 编码结果; std::字符串url,内容; std::cin>>url; curl_easy_setopt(句柄、CURLOPT_URL、URL); curl_easy_setopt(句柄、CURLOPT_ERRORBUFFER和errorBuf[0]); curl\u easy\u setopt(句柄、CURLOPT\u WRITEFUNCTION、writefunc); curl_easy_setopt(句柄、CURLOPT_WRITEDATA和内容); while(true) { time\t startOfLoop=时间(0); //平页 结果=卷曲,易于操作(手柄); 如果(结果==0) std::cout
你所描述的听起来像是服务器池中所有可用的TCP套接字都用完了(例如进入已建立或TIME\u WAIT状态)。一旦套接字关闭,它将进入TIME\u WAIT状态一段时间(通常为4分钟)。在此时间之后,它可以再次使用。因此,如果您的服务器配置了非常少的套接字(url; while(true) { 接收到的\u len=0; //在每次调用curl\u easy\u perform()之前设置选项 curl_easy_setopt(句柄,CURLOPT_URL,URL.c_str()); curl_easy_setopt(句柄、CURLOPT_ERRORBUFFER、errorBuf); curl\u easy\u setopt(句柄、CURLOPT\u WRITEFUNCTION、write\u func); curl_easy_setopt(句柄、CURLOPT_WRITEDATA、内容); //调用URL 如果((结果=curl\u easy\u perform(句柄))==0)如何使用c++;? 我希望能够向我的网站发送我的C++应用程序正在运行的信号。 到目前为止,我所做的是使用libcurl与我网站上的一个PHP文件联系,并提供一些get参数。 这是C++代码: curl_global_init(CURL_GLOBAL_ALL); CURL * handle = curl_easy_init(); CURLcode result; std::string url, contents; std::cin >> url; curl_easy_setopt(handle, CURLOPT_URL, url); curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, &errorBuf[0]); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writefunc); curl_easy_setopt(handle, CURLOPT_WRITEDATA, &contents); while(true) { time_t startOfLoop = time(0); //Ping page result = curl_easy_perform(handle); if(result == 0) std::cout << "[" << time(0) << "]: Pinged \"" << url << "\" ok!\r\n"; else { std::cout << "[" << time(0) << "]: Pinged \"" << url << "\" **ERROR: " << errorBuf << " [Error Code: " << result << "]\r\n"; } //Pause until 5 seconds has passed while(difftime(time(0), startOfLoop) < 5) {} } curl_easy_cleanup(handle); curl\u global\u init(curl\u global\u ALL); CURL*handle=CURL\u easy\u init(); 编码结果; std::字符串url,内容; std::cin>>url; curl_easy_setopt(句柄、CURLOPT_URL、URL); curl_easy_setopt(句柄、CURLOPT_ERRORBUFFER和errorBuf[0]); curl\u easy\u setopt(句柄、CURLOPT\u WRITEFUNCTION、writefunc); curl_easy_setopt(句柄、CURLOPT_WRITEDATA和内容); while(true) { time\t startOfLoop=时间(0); //平页 结果=卷曲,易于操作(手柄); 如果(结果==0) std::cout,c++,http,ping,C++,Http,Ping,你所描述的听起来像是服务器池中所有可用的TCP套接字都用完了(例如进入已建立或TIME\u WAIT状态)。一旦套接字关闭,它将进入TIME\u WAIT状态一段时间(通常为4分钟)。在此时间之后,它可以再次使用。因此,如果您的服务器配置了非常少的套接字(url; while(true) { 接收到的\u len=0; //在每次调用curl\u easy\u perform()之前设置选项 curl_easy_setopt(句柄,CURLOPT_URL,URL.c_str()); curl_e
你能每5秒点击一次你的站点吗?你确定不是你的网络主机关闭了一个感知到的“攻击”吗?将标签从PHP更改为HTTP,因为你实际上正在ping HTTP资源,无论哪个软件运行它。
while(difftime(time(0),startOfLoop)<5){
被调用。避免这种情况,改用。@Marc:我希望没有网站会定期根据每分钟12个请求对攻击者进行分类。正常的web浏览负载更高,如果不定期的话。而合法的AJAX很可能会定期发出类似的请求。@BenVoigt:这是一个免费的web主机。它们可能更容易被攻击而不是一个你实际上在分岔的地方$$$
#include <iostream>
#include <string>
#include <thread>
#include <curl/curl.h>
using namespace std;
char errorBuf[CURL_ERROR_SIZE];
char contents[CURL_MAX_WRITE_SIZE];
std::string url;
size_t received_len = 0;
size_t write_func( char *ptr, size_t size, size_t nmemb, void *userdata)
{
size_t len = size*nmemb;
received_len += len;
return len;
}
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
CURL * handle = curl_easy_init();
CURLcode result;
cout << "Enter URL:";
cin >> url;
while(true)
{
received_len = 0;
// Set options before each call to curl_easy_perform()
curl_easy_setopt(handle, CURLOPT_URL, url.c_str());
curl_easy_setopt(handle, CURLOPT_ERRORBUFFER, errorBuf);
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_func);
curl_easy_setopt(handle, CURLOPT_WRITEDATA, contents);
// Invoke the URL
if((result = curl_easy_perform(handle)) == 0)
cout << "[" << time(0) << "]: \"" << url << "\" Received " << received_len << " bytes ok!\n";
else
std::cout << "[" << time(0) << "]: \"" << url << "\" **ERROR: " << errorBuf << " [Error Code: " << result << "]\n";
// Pause until 5 seconds has passed
std::this_thread::sleep_for(std::chrono::seconds(5));
}
// NOTE: This will never be called
curl_easy_cleanup(handle);
return 0;
}