update
This commit is contained in:
@@ -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和端口
|
||||||
|
@@ -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); // 返回动态分配的字符串副本
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user