SOCKET CTCPSocketAsync::Detach()
{
	//Remove it from the async socket
	RemoveSocketFromList();

	//Delegate
	return CTCPSocket::Detach();
}
void CTCPSocketAsync::BeforeAccept()
{
	try
	{
		//Remove ourselves
		RemoveSocketFromList();
	}
	ERROR_HANDLER("BeforeAccept")
}
BOOL CUDPSocketAsync::Close()
{
	try
	{
		//Quit if not ok
		if (!ValidSocket())
			return FALSE;

		//Kill the timer
		CAsyncSocket::SocketClosing();

		//Remove from socket list
		RemoveSocketFromList();

		//Delegate call
		return CUDPSocket::Close();
	}
	ERROR_HANDLER_RETURN("Close",FALSE)
}
Beispiel #4
0
/*********************************************************
函数名称:FileTransRelay
功能描述:指示文件传输的开始和结束
作者:    余志荣
创建时间:2016-08-30
参数说明:msg_file -- 
返 回 值:TRUE -- 移除成功
		  FALSE -- 移除失败
*********************************************************/
int CSocketServerDlg::FileTransOpera(MSG_FILE_OPERA* msg_opera, CChatSocket *pSocket)
{
	if (msg_opera->nType == MESSAGE_FILE_TRANS_END) // 文件socket传来的消息
	{// 收到文件传输结束消息 断开两边的socket连接
		pSocket->Close();
		RemoveSocketFromList(pSocket);
		
		/*POSITION pos = m_FileSocketList.GetHeadPosition();
		while (pos != NULL)
		{
			CChatSocket *p = m_FileSocketList.GetAt(pos);
			if (!strcmp(p->m_userID, msg_opera->ToID))
			{
				p->Close();
				m_FileSocketList.RemoveAt(pos);
				break;
			}
			m_FileSocketList.GetNext(pos);
		}*/
	}
	return 0;
}
BOOL CTCPSocketAsync::Close()
{
	try
	{
		//Quit if not ok
		if (!ValidSocket())
			return FALSE;

		//Delegate to remove socket
		if (m_pLinkedSocket &&
			m_bCloseEventsOnly)
			m_pLinkedSocket->Close();

		//Kill the timer
		CAsyncSocket::SocketClosing();

		//Remove from socket list
		RemoveSocketFromList();

		//Done
		return CTCPSocket::Close();
	}
	ERROR_HANDLER_RETURN("Close",FALSE)
}