101 lines
1.8 KiB
C++
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;
|
|
}
|