Files
Netralib/include/Netra.hpp

87 lines
3.3 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描述符
2025-08-04 15:01:31 +08:00
* @param flag:false ,true
*/
char *receiveFromClient(int clientSock,bool flag = true);
/**
* @brief IP和端口
* @param clientSock Socket描述符
2025-07-31 14:47:51 +08:00
*/
2025-08-04 15:01:31 +08:00
char *getClientIPAndPort(int clientSock);
2025-07-31 14:47:51 +08:00
/**
* @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();
}