This commit is contained in:
Quella777
2025-08-14 16:18:21 +08:00
parent f3c7d97edf
commit 140decf42e
2 changed files with 7 additions and 14 deletions

View File

@@ -49,7 +49,7 @@ namespace QCL
* @param clientSock 客户端Socket描述符 * @param clientSock 客户端Socket描述符
* @param flag:false 非阻塞模式,true 阻塞模式 * @param flag:false 非阻塞模式,true 阻塞模式
*/ */
char *receiveFromClient(int clientSock, bool flag = true); std::string receiveFromClient(int clientSock, bool flag = true);
/** /**
* @brief 获取连接客户端的IP和端口 * @brief 获取连接客户端的IP和端口

View File

@@ -156,26 +156,19 @@ namespace QCL
/** /**
* @brief 单次接收指定客户端数据 * @brief 单次接收指定客户端数据
* @param clientSock 客户端socket * @param clientSock 客户端socket
*
* 注意:此函数在当前设计中未在线程中使用,仅演示用。
*/ */
char *TcpServer::receiveFromClient(int clientSock, bool flag) std::string TcpServer::receiveFromClient(int clientSock, bool flag)
{ {
char buffer[1024]; char buffer[1024];
std::memset(buffer, 0, sizeof(buffer)); std::memset(buffer, 0, sizeof(buffer));
ssize_t bytesReceived = 0; int flags = flag ? 0 : MSG_DONTWAIT;
ssize_t bytesReceived = recv(clientSock, buffer, sizeof(buffer) - 1, flags);
if (flag)
bytesReceived = recv(clientSock, buffer, sizeof(buffer) - 1, 0);
else
bytesReceived = recv(clientSock, buffer, sizeof(buffer) - 1, MSG_DONTWAIT);
if (bytesReceived <= 0) if (bytesReceived <= 0)
{ return {};
return nullptr;
} return std::string(buffer, bytesReceived);
return strdup(buffer); // 返回动态分配的字符串副本
} }
/** /**