以下是一个使用C++编写的接受网络请求,并执行定时任务的例子:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <thread>
#include <chrono>

void handleRequest(int clientSocket) {
    // 处理请求
    // 这里可以根据实际需求进行相应的处理逻辑
    // 例如,可以解析请求内容、执行相应的操作等
    // 这里只是简单地向客户端发送一个回复消息
    const char* response = "Hello from server!";
    write(clientSocket, response, strlen(response));
    close(clientSocket);
}

void acceptConnections() {
    // 创建服务器套接字
    int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (serverSocket == -1) {
        perror("Failed to create server socket");
        exit(1);
    }

    // 绑定服务器地址和端口
    sockaddr_in serverAddress{};
    serverAddress.sin_family = AF_INET;
    serverAddress.sin_addr.s_addr = INADDR_ANY;
    serverAddress.sin_port = htons(8080);
    if (bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == -1) {
        perror("Failed to bind server socket");
        exit(1);
    }

    // 开始监听连接请求
    if (listen(serverSocket, 5) == -1) {
        perror("Failed to listen for connections");
        exit(1);
    }

    // 循环接受连接请求并处理
    while (true) {
        sockaddr_in clientAddress{};
        socklen_t clientAddressLength = sizeof(clientAddress);

        // 接受连接请求
        int clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddress, &clientAddressLength);
        if (clientSocket == -1) {
            perror("Failed to accept connection");
            continue;
        }

        // 创建新线程处理请求
        std::thread t(handleRequest, clientSocket);
        t.detach();
    }

    close(serverSocket);
}

void runScheduledTask() {
    // 定时任务,每隔1秒输出一次当前时间
    while (true) {
        auto now = std::chrono::system_clock::now();
        time_t currentTime = std::chrono::system_clock::to_time_t(now);
        std::cout << "Current time: " << ctime(&currentTime);
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

int main() {
    // 创建一个新线程运行定时任务
    std::thread t(runScheduledTask);

    // 在主线程中运行接受连接的函数
    acceptConnections();

    return 0;
}

这个例子中,我们使用socket()函数创建了一个服务器套接字,并使用bind()函数将其绑定到指定的地址和端口上。然后,使用listen()函数开始监听连接请求。接下来,我们使用accept()函数接受连接请求,并在一个新的线程中处理请求。处理请求的函数handleRequest()在接收到请求后,会简单地向客户端发送一个回复消息。同时,我们在主线程中创建了另一个新的线程来运行定时任务,每隔1秒输出当前时间

用C++写一个接受网络请求并执行定时任务的例子

原文地址: https://www.cveoy.top/t/topic/h69F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录