本文整理汇总了C++中TcpSocket::update方法的典型用法代码示例。如果您正苦于以下问题:C++ TcpSocket::update方法的具体用法?C++ TcpSocket::update怎么用?C++ TcpSocket::update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TcpSocket
的用法示例。
在下文中一共展示了TcpSocket::update方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: update
bool TcpSocketServer::update()
{
if (!isValid())
return false;
sockaddr_in clientAddr = { 0 };
socklen_t addrLen = sizeof(clientAddr);
SOCKET accepted = ::accept(_handle, (sockaddr*)&clientAddr, &addrLen);
if (accepted != INVALID_SOCKET)
{
String peerAddr = inet_ntoa(clientAddr.sin_addr);
uint16 peerPort = clientAddr.sin_port;
TcpSocket* client = _listener ? _listener->onAccept(this, accepted, peerAddr, peerPort) : NULL;
if (client == NULL)
{
::closesocket(accepted);
LOG(0, "++ ServerSocket: '%s: %d' refused\n", peerAddr.c_str(), peerPort);
}
else
{
LOG(0, "++ ServerSocket: '%s: %d' accepted\n", peerAddr.c_str(), peerPort);
_clients.insert(client);
}
}
else
{
int err = getLastError();
if (err != ERR_WOULD_BLOCK)
return error("Listen", err);
}
for (Clients::iterator itr = _clients.begin(), end = _clients.end(); itr != end; )
{
TcpSocket* client = *itr;
if (!client->update())
{
if (_listener) _listener->onDisconnected(this, client);
_clients.erase(itr++);
}
else
{
++itr;
}
}
if (_listener) _listener->onUpdate();
return true;
}