本文整理汇总了C++中CAddress::IsValid方法的典型用法代码示例。如果您正苦于以下问题:C++ CAddress::IsValid方法的具体用法?C++ CAddress::IsValid怎么用?C++ CAddress::IsValid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CAddress
的用法示例。
在下文中一共展示了CAddress::IsValid方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BitcoinNetMaintain
void CBitcoinServer::BitcoinNetMaintain()
{
CChainManager& chain = CChainManager::CreateChainManagerInstance();
// chain.LoadBitcoinBlockIndex();
getAddrFromDb();
getAddrFromDnsSeed();
while(true)
{
if (!m_oneShot.empty())
{
std::string strDest;
strDest = m_oneShot.front();
m_oneShot.pop_front();
SOCKET hSocket = INVALID_SOCKET;
CAddress addr;
if (openNetworkConnection(addr, strDest.c_str(), hSocket))
{
boost::shared_ptr<CBitcoinNode> node = createNode(hSocket, addr);
if (node)
{
node->fOneShot = true;
m_nodesManager.insert(node);
node->PushVersion();
}
}
else
{
m_oneShot.push_back(strDest);
}
}
if (Bitcoin_MAX_CONNECTED_SOCKECT > m_nodesManager.getNodesSize())
{
do
{
SOCKET hSocket = INVALID_SOCKET;
int nUnkBias = 10 + (int)min(m_nodesManager.getNodesSize(), Bitcoin_MAX_CONNECTED_SOCKECT)*10;
CAddress addr = m_BitcoinAddrMan.Select(nUnkBias);
if (!addr.IsValid() || m_nodesManager.exist(addr) || IsLocal(addr))
{
break;
}
if (IsLimited(addr) || addr.GetPort() != Bitcoin_DEFAULT_PORT)
{
break;
}
if (openNetworkConnection(addr, NULL, hSocket))
{
boost::shared_ptr<CBitcoinNode> node = createNode(hSocket, addr);
if (node)
{
m_nodesManager.insert(node);
node->PushVersion();
}
}
}while(false);
}
m_nodesManager.sockectSelect();
m_nodesManager.clearDisconnectNodes();
m_nodesManager.startSync();
}
}