本文整理汇总了C++中CTcpSocket::SetOptNB方法的典型用法代码示例。如果您正苦于以下问题:C++ CTcpSocket::SetOptNB方法的具体用法?C++ CTcpSocket::SetOptNB怎么用?C++ CTcpSocket::SetOptNB使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTcpSocket
的用法示例。
在下文中一共展示了CTcpSocket::SetOptNB方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OpenSocketPair
bool CTcpSocket::OpenSocketPair(CTcpSocket& nIn, CTcpSocket& nOut)
{
#if defined(WIN32)
CTcpSocket nServer;
nServer.SetAddress("127.0.0.1", 0);
if (!nServer.Open())
{
AILOG_ERROR() << "OpenSocketPair[Open] error," << CTcpSocket::LastErrorMessage();
return false;
}
if (!nServer.Listen())
{
AILOG_ERROR() << "OpenSocketPair[Listen] error," << CTcpSocket::LastErrorMessage();
return false;
}
std::string strHost;
int nPort;
if (!nServer.GetLocalAddress(strHost, nPort))
{
AILOG_ERROR() << "OpenSocketPair[GetLocalAddress] error," << CTcpSocket::LastErrorMessage();
return false;
}
nIn.SetAddress("127.0.0.1", nPort);
if (!nIn.Open())
{
AILOG_ERROR() << "OpenSocketPair[Open client] error," << CTcpSocket::LastErrorMessage();
return false;
}
nIn.SetOptNB(true);
if (!nIn.Connect())
{
if (!CTcpSocket::IsNoneFatal())
{
nIn.Close();
AILOG_ERROR() << "OpenSocketPair[Connect] error," << CTcpSocket::LastErrorMessage();
return false;
}
}
if (!nServer.Accept(nOut))
{
nIn.Close();
AILOG_ERROR() << "OpenSocketPair[Accept] error," << CTcpSocket::LastErrorMessage();
return false;
}
nIn.SetOptNB(false);
return true;
#else
int fds[2];
if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) != 0)
{
AILOG_ERROR() << "OpenSocketPair[socketpair] error," << CTcpSocket::LastErrorMessage();
return false;
}
nIn.m_nFd = fds[0];
nOut.m_nFd = fds[1];
return true;
#endif
}