udphandler.cpp

来自「图象处理」· C++ 代码 · 共 83 行

CPP
83
字号
// UDPHandler.cpp: implementation of the CUDPHandler class.
//
//////////////////////////////////////////////////////////////////////

#include "UDPHandler.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CUDPHandler::CUDPHandler() : m_lpNode(NULL)
{

}

CUDPHandler::~CUDPHandler()
{
	LPOnlineNode lpNode;
	while (m_lpNode != NULL)
	{
		lpNode = m_lpNode;
		m_lpNode = m_lpNode->Next;
		delete lpNode;
	}
}

void CUDPHandler::InsertNode(const char * szIP, int iPort)
{
	m_mutex.LockMutex();
	LPOnlineNode lpNode = new OnLineNode;
	strcpy(lpNode->szIP, szIP);
	lpNode->port = iPort;
	lpNode->Next = m_lpNode;
	lpNode->Prev = NULL;
	if (m_lpNode != NULL)
		m_lpNode->Prev = lpNode;
	m_lpNode = lpNode;
	m_mutex.UnlockMutex();
}

void CUDPHandler::DeleteNode(const char * szIP, int iPort)
{
	LPOnlineNode lpNode;
	m_mutex.LockMutex();
	lpNode = m_lpNode;
	while (lpNode != NULL)
	{
		if (!strcmp(lpNode->szIP, szIP) && (lpNode->port == iPort))
		{
			if (lpNode->Prev != NULL)
				lpNode->Prev->Next = lpNode->Next;
			else
				m_lpNode = lpNode->Next;
			if (lpNode->Next != NULL)
				lpNode->Next->Prev = lpNode->Prev;

			delete lpNode;
			return;
		}
		lpNode = lpNode->Next;
	}
	m_mutex.UnlockMutex();
}

bool CUDPHandler::UpdateMsg(const char* szFile, char iType)
{
	char szMsg[MAX_PATH];
	LPOnlineNode lpNode;
	
	szMsg[0] = CMD_UPDATE_INDEX;
	szMsg[1] = iType;
	strcpy(szMsg + 2, szFile);

	m_mutex.LockMutex();
	lpNode = m_lpNode;
	while (lpNode != NULL)
	{
		CSocketBase::SendUDP(szMsg, strlen(szMsg) + 1, lpNode->szIP, lpNode->port);
		lpNode = lpNode->Next;
	}
	m_mutex.UnlockMutex();
	return true;
}

⌨️ 快捷键说明

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