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);
}