www.pudn.com > ChatUseIOCP.rar > ChatClientSocket.cpp


#include "StdAfx.h" 
#include ".\chatclientsocket.h" 
 
UINT WM_CHAT_CONNECT = RegisterWindowMessage("Chat Connect"); 
UINT WM_CHAT_DISCONNECT = RegisterWindowMessage("Chat disconnect"); 
UINT WM_CHAT_TRANS	= RegisterWindowMessage("Chat trans"); 
 
 
CChatSocket::CChatSocket(void) 
{ 
	m_hWndParent = NULL; 
} 
 
CChatSocket::~CChatSocket(void) 
{ 
} 
 
 
void CChatSocket::HandlePacket(Packet* pInPacket) 
{ 
	if (m_hWndParent) 
		PostMessage(m_hWndParent, WM_CHAT_TRANS, pInPacket->Status, (LPARAM)pInPacket); 
} 
 
 
void CChatSocket::Init(HWND hWndParent) 
{ 
	m_hWndParent = hWndParent; 
} 
 
void CChatSocket::HandleDisconnect() 
{ 
	if (m_hWndParent) 
	{ 
		PostMessage(m_hWndParent, WM_CHAT_DISCONNECT, NULL, NULL); 
		//if (IsThreadRunning()) ChatProtocol::Connect(); 
	} 
} 
 
void CChatSocket::HandleConnect() 
{ 
	if (m_hWndParent) 
		PostMessage(m_hWndParent, WM_CHAT_CONNECT, NULL, NULL); 
} 
 
void CChatSocket::HandleError(int nErrorCode, const char* pszDescription) 
{ 
	//if (IsThreadRunning()) ChatProtocol::Connect(); 
	TRACE("Socket error: %d, descr: %s\n", nErrorCode, pszDescription); 
	this->Disconnect(); 
	HandleDisconnect(); 
} 
 
void CChatSocket::HandleWriteLog(int nImportance, const char* pszGroup, const char* pszLogEntry) 
{ 
	TRACE( "Socket(%d)(%s): %s\n", nImportance, pszGroup, pszLogEntry ); 
} 
 
 
 
 
// =================================================================== 
// Message functions start here 
// =================================================================== 
 
 
bool CChatSocket::Login(const char* szUserName, const char* szPassword) 
{ 
	//check if we are connected 
	if (!IsConnected()) 
		return false; 
 
	char szBuffer[512]; 
	sprintf(szBuffer, "%s%c%s%c", szUserName, 0x04, szPassword, 0x04); 
 
	Packet OutPacket(TRANS_CODES::TC_LOGIN); 
	SetPacketBuffer(OutPacket, szBuffer, (int)strlen(szBuffer)); 
	return Send(OutPacket);	 
} 
 
 
bool CChatSocket::SendMessage(const char* szFrom, const char* szTarget, const char* szMessage) 
{ 
	//check if we are connected 
	if (!IsConnected()) 
		return false; 
 
	char szBuffer[512]; 
	sprintf(szBuffer, "%s%c%s%c%s", szFrom, 0x04, szTarget, 0x04, szMessage); 
 
	// Send the packet. 
	Packet OutPacket(TRANS_CODES::TC_SEND_MESSAGE); 
	SetPacketBuffer(OutPacket, szBuffer, (int)strlen(szBuffer)); 
	return Send(OutPacket);	 
} 
 
bool CChatSocket::GetUsers() 
{ 
	//check if we are connected 
	if (!IsConnected()) 
		return false; 
 
	// Send the packet. 
	Packet OutPacket(TRANS_CODES::TC_LIST_USERS); 
	return Send(OutPacket);	 
} 
 
void CChatSocket::Connect(const char* pszServer) 
{ 
 
	ChatProtocol::SetReconnect(true); 
	ChatProtocol::Connect(pszServer, 4320); 
 
}