gck-ms-original/WSTCPS.cpp

101 lines
1.8 KiB
C++

// WSTCPS.cpp : implementation file
//
#include "stdafx.h"
#include "GCKMS.h"
#include "GCKMSDlg.h"
#include "WSTCPS.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWSTCPS
CWSTCPS::CWSTCPS()
{
}
CWSTCPS::~CWSTCPS()
{
}
// Do not edit the following lines, which are needed by ClassWizard.
#if 0
BEGIN_MESSAGE_MAP(CWSTCPS, CAsyncSocket)
//{{AFX_MSG_MAP(CWSTCPS)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
#endif // 0
/////////////////////////////////////////////////////////////////////////////
// CWSTCPS member functions
void CWSTCPS::OnAccept(int nErrorCode)
{
((CGCKMSDlg*)AfxGetMainWnd())->OnTCPS_Accept(nErrorCode);
CAsyncSocket::OnAccept(nErrorCode);
}
void CWSTCPS::OnReceive(int nErrorCode)
{
((CGCKMSDlg*)AfxGetMainWnd())->OnTCPS_Receive(nErrorCode, this);
CAsyncSocket::OnReceive(nErrorCode);
}
void CWSTCPS::OnClose(int nErrorCode)
{
((CGCKMSDlg*)AfxGetMainWnd())->OnTCPS_Close(nErrorCode, this);
CAsyncSocket::OnClose(nErrorCode);
}
void CWSTCPS::OnSend(int nErrorCode)
{
if(nErrorCode == 0)
{
if(m_dta.empty() == FALSE)
{
int i;
int ns;
char *dta;
dta = new char[m_dta.size()];
for(i = 0; i < m_dta.size(); i ++)
{
dta[i] = m_dta[i];
}
ns = m_dta.size();
m_dta.clear();
Send(dta, ns);
delete [] dta;
}
}
CAsyncSocket::OnSend(nErrorCode);
}
int CWSTCPS::Send(const void* lpBuf, int nBufLen, int nFlags)
{
int i;
int ns;
char *dta;
dta = new char[nBufLen];
memcpy(dta, lpBuf, nBufLen);
for(i = 0; i < nBufLen; i ++)
{
m_dta.push_back(dta[i]);
}
delete [] dta;
ns = CAsyncSocket::Send(lpBuf, nBufLen, nFlags);
if(ns != SOCKET_ERROR)
{
if(m_dta.empty() == FALSE)
{
m_dta.clear();
}
}
return ns;
}