Files
Netralib/include/Netra.hpp

81 lines
3.1 KiB
C++
Raw Normal View History

2025-07-31 14:47:51 +08:00
#pragma once
#include "QCL_Include.hpp"
namespace QCL
{
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* @class TcpServer
* @brief 线TCP服务器类
*
* 使线
* 线
* 线Socket句柄
*/
class TcpServer
{
public:
/**
* @brief
* @param port
*/
TcpServer(int port);
/**
* @brief stop()
*/
~TcpServer();
/**
* @brief socket线
* @return truefalse
*/
bool start();
/**
* @brief 线退
*/
void stop();
/**
* @brief
* @param clientSock Socket描述符
* @param message
*/
void sendToClient(int clientSock, const std::string &message);
/**
* @brief
* @param clientSock Socket描述符
*/
char *receiveFromClient(int clientSock);
/**
* @brief Socket的副本
* @return Socket的vector线
*/
std::vector<int> getClientSockets();
private:
/**
* @brief 线
*/
void acceptClients();
private:
int serverSock_; ///< 服务器监听Socket描述符
int port_; ///< 服务器监听端口
std::atomic<bool> running_; ///< 服务器运行状态标志(线程安全)
std::vector<std::thread> clientThreads_; ///< 用于处理每个客户端的线程集合
std::thread acceptThread_; ///< 负责监听新连接的线程
std::mutex clientsMutex_; ///< 保护clientSockets_的互斥锁
std::vector<int> clientSockets_; ///< 当前所有连接的客户端Socket集合
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 屏蔽所有信号
void blockAllSignals();
}