clntsock.cpp
来自「一个简易的聊天室程序」· C++ 代码 · 共 106 行
CPP
106 行
// clntsock.cpp : implementation of the CClientSocket class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "clntsock.h"
//#include "srvrdoc.h"
#include "ChatServerDoc.h"
#include "msg.h"
/////////////////////////////////////////////////////////////////////////////
// CClientSocket Construction
CClientSocket::CClientSocket(CChatServerDoc* pDoc)
{
m_pDoc = pDoc;
m_nMsgCount = 0;
m_pFile = NULL;
m_pArchiveIn = NULL;
m_pArchiveOut = NULL;
m_ChattersName = "";
}
/////////////////////////////////////////////////////////////////////////////
// CClientSocket Operations
void CClientSocket::Init()
{
m_pFile = new CSocketFile(this);
m_pArchiveIn = new CArchive(m_pFile,CArchive::load);
m_pArchiveOut = new CArchive(m_pFile,CArchive::store);
}
void CClientSocket::Abort()
{
if (m_pArchiveOut != NULL)
{
m_pArchiveOut->Abort();
delete m_pArchiveOut;
m_pArchiveOut = NULL;
}
}
void CClientSocket::SendMsg(CMsg* pMsg)
{
if (m_pArchiveOut != NULL)
{
pMsg->Serialize(*m_pArchiveOut);
m_pArchiveOut->Flush();
}
}
void CClientSocket::ReceiveMsg(CMsg* pMsg)
{
pMsg->Serialize(*m_pArchiveIn);
}
/////////////////////////////////////////////////////////////////////////////
// CClientSocket Overridable callbacks
void CClientSocket::OnReceive(int nErrorCode)
{
CSocket::OnReceive(nErrorCode);
m_pDoc->ProcessPendingRead(this);
}
/////////////////////////////////////////////////////////////////////////////
// CSocket Implementation
CClientSocket::~CClientSocket()
{
if (m_pArchiveOut != NULL)
delete m_pArchiveOut;
if (m_pArchiveIn != NULL)
delete m_pArchiveIn;
if (m_pFile != NULL)
delete m_pFile;
}
#ifdef _DEBUG
void CClientSocket::AssertValid() const
{
CSocket::AssertValid();
}
void CClientSocket::Dump(CDumpContext& dc) const
{
CSocket::Dump(dc);
}
#endif //_DEBUG
IMPLEMENT_DYNAMIC(CClientSocket, CSocket)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?