⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitornetwork.cpp

📁 墨香最新私服
💻 CPP
字号:
// MonitorNetwork.cpp: implementation of the CMonitorNetwork class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MonitorNetwork.h"
#include "MSSystem.h"
#include "MonitorServerTable.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CMonitorNetwork)

CMonitorNetwork::CMonitorNetwork()
{
	CoInitialize(NULL);
	m_pINet = NULL;
}

CMonitorNetwork::~CMonitorNetwork()
{
	CoUninitialize();
}
void CMonitorNetwork::Release()
{
	if(m_pINet)
	{
		m_pINet->Release();
		m_pINet = NULL;
	}
}


BOOL CMonitorNetwork::Init(DESC_NETWORK * desc)
{
	HRESULT hr;
	hr = CoCreateInstance( CLSID_4DyuchiNET, NULL, CLSCTX_INPROC_SERVER, IID_4DyuchiNET, (void**)&m_pINet);
	if (FAILED(hr))
		return FALSE;
	if(!m_pINet->CreateNetwork(desc))
		return FALSE;

	return TRUE;
}

void CMonitorNetwork::ConnectToMAS()
{
	m_pINet->ConnectToServerWithServerSide(MServerTable->m_pMASInfo->szIPForServer,MServerTable->m_pMASInfo->wPortForServer, CMSSystem::OnConnectMASSuccess, CMSSystem::OnConnectMASFail,(void*)MServerTable->m_pMASInfo);
}

BOOL CMonitorNetwork::StartServer(WORD type)
{
	if(type == TYPE_MAS)
	{
		char *szServerIP = MServerTable->m_pMASInfo->szIPForServer;
		WORD ServerPort = MServerTable->m_pMASInfo->wPortForServer;

		char *szUserIP = MServerTable->m_pMASInfo->szIPForUser;
		WORD UserPort = MServerTable->m_pMASInfo->wPortForUser;

		if(!m_pINet->StartServerWithServerSide(szServerIP,ServerPort))
			return FALSE;

		if(!m_pINet->StartServerWithUserSide(szUserIP,UserPort))
			return FALSE;
	}
	else if( type == TYPE_MS )
	{
		char *szServerIP = MServerTable->m_pMSInfo->szIPForServer;
		WORD ServerPort = MServerTable->m_pMSInfo->wPortForServer;

		if(!m_pINet->StartServerWithServerSide(szServerIP,ServerPort))
			return FALSE;
	}
	else if( type == TYPE_RMS )
	{
		char *szUserIP = MServerTable->m_pMASInfo->szIPForUser;
		WORD UserPort = MServerTable->m_pMASInfo->wPortForUser+1;

		if(!m_pINet->StartServerWithUserSide(szUserIP,UserPort))
			return FALSE;

		//-------------------烙矫 窍靛 内爹-------------
//		if(!m_pINet->StartServerWithUserSide("211.233.23.199", 14602))
//			return FALSE;

	}
	return TRUE;
}

//only ms
void CMonitorNetwork::SendToMapServer(DWORD dwConnectionIdx, char* msg, DWORD size)
{
	m_pINet->SendToServer(dwConnectionIdx, msg, size, FLAG_SEND_NOT_ENCRYPTION);
}
void CMonitorNetwork::SendToMapServerAll(char* msg, DWORD size)
{
	MServerTable->m_InfoTable.SetPositionHead();
	MSERVERINFO * info = NULL;
	while(info = (MSERVERINFO *)MServerTable->m_InfoTable.GetData())
	{
		if(MServerTable->GetMASInfo() != info)
		m_pINet->SendToServer(info->dwConnectionIndex, msg, size, FLAG_SEND_NOT_ENCRYPTION);
	}
}
void CMonitorNetwork::SendToMAS(char* msg, DWORD size)
{
	m_pINet->SendToServer(MServerTable->GetMASInfo()->dwConnectionIndex, msg, size, FLAG_SEND_NOT_ENCRYPTION);
}

//only mas
void CMonitorNetwork::SendToMC(DWORD dwConnectionIdx, char* msg, DWORD size)
{
	m_pINet->SendToUser(dwConnectionIdx, msg, size, FLAG_SEND_NOT_ENCRYPTION);
}
void CMonitorNetwork::SendToMS(DWORD dwConnectionIdx, char* msg, DWORD size)
{
	m_pINet->SendToServer(dwConnectionIdx, msg, size, FLAG_SEND_NOT_ENCRYPTION);
}
void CMonitorNetwork::SendToMSAll(char* msg, DWORD size)
{
	MServerTable->m_InfoTable.SetPositionHead();
	MSERVERINFO * info = NULL;
	while(info = (MSERVERINFO *)MServerTable->m_InfoTable.GetData())
	{
		m_pINet->SendToServer(info->dwConnectionIndex, msg, size, FLAG_SEND_NOT_ENCRYPTION);
	}
}

void CMonitorNetwork::GetUserAddress(DWORD dwConnectionIndex, char* ip, WORD * port)
{
	m_pINet->GetUserAddress(dwConnectionIndex, ip, port);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -