#include
#include
#include
#include
#include
bool test4GNetwork()
{
std::string url = "http://www.google.com"; // 测试网址
std::string cmd = "ping -c 1 " + url + " > /dev/null 2>&1"; // 使用ping命令来测试网络连接
int result = std::system(cmd.c_str()); // 运行ping命令
return (result == 0); // 如果返回值为0表示网络正常,否则表示网络异常
}
int main()
{
if (test4GNetwork())
{
std::cout << "4G网络正常" << std::endl;
}
else
{
std::cout << "4G网络异常" << std::endl;
}
return 0;
}
这段代码使用ping命令来测试网络连接。它首先定义了一个测试网址(这里使用了Google作为测试网址),然后通过拼接字符串形式生成ping命令,并使用std::system函数来运行该命令。如果命令返回值为0,则表示网络正常;否则,表示网络异常。
#include
#include
#include
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* response)
{
size_t totalSize = size * nmemb;
response->append((char*)contents, totalSize);
return totalSize;
}
bool test4GNetwork()
{
std::string url = "http://www.google.com"; // 测试网址
CURL* curl = curl_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
std::string response;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
CURLcode result = curl_easy_perform(curl);
long statusCode;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &statusCode);
curl_easy_cleanup(curl);
if (result != CURLE_OK || statusCode != 200)
{
return false; // 网络异常
}
return true; // 网络正常
}
return false; // 初始化错误
}
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
if (test4GNetwork())
{
std::cout << "4G网络正常" << std::endl;
}
else
{
std::cout << "4G网络异常" << std::endl;
}
curl_global_cleanup();
return 0;
}
该代码使用了libcurl库来执行HTTP请求,获取响应中的状态码。它定义了一个回调函数WriteCallback,用于将响应内容保存到字符串中。然后,它使用curl_easy_setopt函数来设置curl实例的相关选项,包括URL、跟随重定向、写入数据的回调函数等。接下来,使用curl_easy_perform函数执行HTTP请求,并使用curl_easy_getinfo函数获取响应的状态码。最后,根据结果判断网络连接的可用性。
#include
#include
#include
#include
#include
#include
#include
bool test4GNetwork()
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
{
std::cerr << "Failed to create socket" << std::endl;
return false;
}
sockaddr_in serverAddr{};
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(80); // 测试使用HTTP的默认端口
serverAddr.sin_addr.s_addr = inet_addr("8.8.8.8"); // Google的IP地址,可以替换为其他可靠的IP地址
int result = connect(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
if (result == -1)
{
std::cerr << "Failed to connect to server" << std::endl;
close(sockfd);
return false;
}
close(sockfd);
return true;
}
int main()
{
if (test4GNetwork())
{
std::cout << "4G网络正常" << std::endl;
}
else
{
std::cout << "4G网络异常" << std::endl;
}
return 0;
}
这段代码使用了socket函数来创建一个TCP套接字,然后通过connect函数来连接到指定的服务器地址(这里使用了Google的IP地址)。如果连接成功,则表示4G网络正常可用,否则表示网络异常。
#include
#include
#include
#include
#include
#include
std::string exec(const char* cmd) {
std::array buffer;
std::string result;
std::shared_ptr pipe(popen(cmd, "r"), pclose);
if (!pipe) {
throw std::runtime_error("popen() failed!");
}
while (!feof(pipe.get())) {
if (fgets(buffer.data(), 128, pipe.get()) != nullptr) {
result += buffer.data();
}
}
return result;
}
bool test4GNetwork()
{
std::string output = exec("ping -c 1 www.google.com");
if (output.find("1 packets transmitted, 1 received") != std::string::npos)
{
return true;
}
else
{
return false;
}
}
int main()
{
if (test4GNetwork())
{
std::cout << "4G网络正常" << std::endl;
}
else
{
std::cout << "4G网络异常" << std::endl;
}
return 0;
}
这段代码使用了exec函数来调用ping命令,并将结果保存在一个字符串中。然后,它搜索输出中是否包含"1 packets transmitted, 1 received"这个字符串来确定是否收到了回复。如果收到了回复,则表示4G网络正常可用,否则表示网络异常。
#include
#include
bool test4GNetwork()
{
boost::asio::io_context ioContext;
boost::asio::ip::tcp::resolver resolver(ioContext);
boost::asio::ip::tcp::resolver::query query("www.google.com", "80");
try
{
boost::asio::ip::tcp::resolver::iterator it = resolver.resolve(query);
boost::asio::ip::tcp::socket socket(ioContext);
boost::asio::connect(socket, it);
return true;
}
catch (const std::exception& ex)
{
std::cerr << "Failed to connect to server: " << ex.what() << std::endl;
return false;
}
}
int main()
{
if (test4GNetwork())
{
std::cout << "4G网络正常" << std::endl;
}
else
{
std::cout << "4G网络异常" << std::endl;
}
return 0;
}
这段代码使用了Boost.Asio库来发起一个TCP连接请求,并尝试连接到指定的服务器地址和端口。如果连接成功,则表示4G网络正常可用,否则表示网络异常。