当前位置: 首页>>代码示例>>C++>>正文


C++ CNode::clearPing方法代码示例

本文整理汇总了C++中CNode::clearPing方法的典型用法代码示例。如果您正苦于以下问题:C++ CNode::clearPing方法的具体用法?C++ CNode::clearPing怎么用?C++ CNode::clearPing使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CNode的用法示例。


在下文中一共展示了CNode::clearPing方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: addNode

int CNodeMgr::addNode(char* p_addr, char* p_name, bool p_busy, bool p_needUHP)
{
	/* 外で排他かけること!! */

	/* 簡単に書式チェック */
	char* p = p_addr;
	if (strlen(p_addr) == 0)			return -1;
	if ((p = strchr(p+1, '.')) == NULL) return -1;
	if ((p = strchr(p+1, '.')) == NULL) return -1;
	if ((p = strchr(p+1, '.')) == NULL) return -1;
	if ((p = strchr(p+1, ':')) == NULL) return -1;

	// 自分は無視するm_ownNodeが未取得ならやはり無視
	if (useLobbyServer())
	{
		char* pos = strchr(m_ownNode, ':');
		if (m_ownNode[0] == '\0' || strncmp(m_ownNode, p_addr, (int)(pos - p_addr)) == 0) return -1;
	}

	int idx = -1;
	// UNKNOWN_NAMEは無条件に不一致とする
	if (strncmp(p_name, UNKNOWN_NAME, sizeof(UNKNOWN_NAME)) != 0)
	{
		sockaddr_in addr = g_netMgr->getAddrFromString(p_addr);
		idx = findNodeIdx_name_ip(p_name, addr.sin_addr.S_un.S_addr);
	}

	if (idx == -1)
	{
		//DBGOUT_NET("addNode %s:%s\n", p_name, p_addr);

		/* 重複していなければ追加 */
		CNode node;
		__strncpy(node.m_addr, p_addr, 31);
		__strncpy(node.m_name, p_name, 29);
		node.m_state		= p_busy ? State_Busy : State_NoResponse;
		node.m_ex			= 0;
		node.m_rank			= Rank_F;
		node.m_delay		= 0;
		node.m_win			= 0;
		node.m_ignoreSlow	= 1;
		node.m_round		= 0;
		node.m_deny			= true;
		node.m_needDetail	= true;
		node.m_gamecount	= 0;
		node.m_scriptCode	= 0;
		
		node.m_allowIntrusion	= false;
		node.m_watchMaxNode		= -16;
		node.m_galleryCount		= 0;
		node.m_galleryUpdateTime= timeGetTime();
		
		/* 定期的に他のノードにポートの拡散を依頼する */
		node.m_uhpNodeIdx	= 0;

		__strncpy(node.m_ver, "----", 9);
		memcpy(node.m_id, INVALID_MID, sizeof(INVALID_MID));
		memset(node.m_msg, 0, 256);
		node.clearBattleInfo();
		
		node.m_validInfo = 0x00000000;

		node.clearPing();

		m_nodeList.add(node);

		CNode* newnode = &m_nodeList[m_nodeList.size() - 1];
		newnode->m_tmpaddr.add(new char[32]);
		__strncpy(newnode->m_tmpaddr[newnode->m_tmpaddr.size() - 1], p_addr, 31);

		return (m_nodeList.size() - 1);
	}
	else
	{
		if (findNodeIdx_address(p_addr) == -1)
		{
			// ポートを追加
			m_nodeList[idx].m_tmpaddr.add(new char[32]);
			__strncpy(m_nodeList[idx].m_tmpaddr[m_nodeList[idx].m_tmpaddr.size() - 1], p_addr, 31);
			// return idx; //新規追加ではないのでidxを返してはいけない
			//DBGOUT_NET("addNode : multi port %s:%s\n", p_name, p_addr);
		}
		//else DBGOUT_NET("addNode : duplicate error %s:%s\n", p_name, p_addr);
	}

	return -1;
}
开发者ID:ggnauthor,项目名称:ggxxnet,代码行数:87,代码来源:node.cpp


注:本文中的CNode::clearPing方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。