"#include \n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <sys/types.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <arpa/inet.h>\n#include <unistd.h>\n#include \n#include \n\nvoid handleRequest(int clientSocket) {\n // 处理请求\n // 这里可以根据实际需求进行相应的处理逻辑\n // 例如,可以解析请求内容、执行相应的操作等\n // 这里只是简单地向客户端发送一个回复消息\n const char* response = "Hello from server!" ;\n write(clientSocket, response, strlen(response));\n close(clientSocket);\n}\n\nvoid acceptConnections() {\n // 创建服务器套接字\n int serverSocket = socket(AF_INET, SOCK_STREAM, 0);\n if (serverSocket == -1) {\n perror("Failed to create server socket" );\n exit(1);\n }\n\n // 绑定服务器地址和端口\n sockaddr_in serverAddress{};\n serverAddress.sin_family = AF_INET;\n serverAddress.sin_addr.s_addr = INADDR_ANY;\n serverAddress.sin_port = htons(8080);\n if (bind(serverSocket, (struct sockaddr*)&serverAddress, sizeof(serverAddress)) == -1) {\n perror("Failed to bind server socket" );\n exit(1);\n }\n\n // 开始监听连接请求\n if (listen(serverSocket, 5) == -1) {\n perror("Failed to listen for connections" );\n exit(1);\n }\n\n // 循环接受连接请求并处理\n while (true) {\n sockaddr_in clientAddress{};\n socklen_t clientAddressLength = sizeof(clientAddress);\n\n // 接受连接请求\n int clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddress, &clientAddressLength);\n if (clientSocket == -1) {\n perror("Failed to accept connection" );\n continue;\n }\n\n // 创建新线程处理请求\n std::thread t(handleRequest, clientSocket);\n t.detach();\n }\n\n close(serverSocket);\n}\n\nvoid runScheduledTask() {\n // 定时任务,每隔1秒输出一次当前时间\n while (true) {\n auto now = std::chrono::system_clock::now();\n time_t currentTime = std::chrono::system_clock::to_time_t(now);\n std::cout << "Current time: " << ctime(&currentTime);\n std::this_thread::sleep_for(std::chrono::seconds(1));\n }\n}\n\nint main() {\n // 创建一个新线程运行定时任务\n std::thread t(runScheduledTask);\n\n // 在主线程中运行接受连接的函数\n acceptConnections();\n\n return 0;\n}\n"


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

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